phattarachai / filament-thai-date-picker
FilamentPHP Thai Date Picker Form Component
Package info
github.com/phattarachai/filament-thai-date-picker
Language:JavaScript
pkg:composer/phattarachai/filament-thai-date-picker
Requires
- php: ^8.3
- filament/forms: ^5.10.1
- illuminate/support: ^12.0|^13.0
- phattarachai/thaidate: ^13.0|^14.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- filament/infolists: ^5.10.1
- filament/tables: ^5.10.1
- larastan/larastan: ^3.10
- laravel/pint: ^1.24
- nunomaduro/collision: ^8.6
- orchestra/testbench: ^10.8|^11.0
- pestphp/pest: ^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v4.1.0
- v4.0.2
- v4.0.1
- v4.0.0
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.2.0
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.2
- 1.0.1
- dev-feat/display-format
- dev-fix/sync-filament-5-10
- dev-chore/dist-archive-excludes
- dev-fix/time-description-timezone
- dev-docs/2.x-developer-section
- dev-docs/1.x-developer-section
- dev-docs/readme-versions-developer
- dev-fix/thaidate-14
This package is auto-updated.
Last update: 2026-10-11 08:26:22 UTC
README
ปฏิทิน Thai Date Picker สำหรับ Filament Form Component วัน/เดือน/ปีที่แสดงใน Form เป็นภาษาไทย (พ.ศ.) แต่เก็บเข้า Model เป็นปี ค.ศ.ตามปกติ
Version ที่รองรับ
| ThaiDatePicker | Filament | PHP | Laravel | สถานะ |
|---|---|---|---|---|
| 4.x | 5.x | 8.3+ | 12, 13 | เวอร์ชันหลัก พัฒนาต่อเนื่อง |
| 3.x | 5.x | 8.2+ | ตาม Filament | แก้บั๊กเท่านั้น |
| 2.x | 4.x | 8.2+ | ตาม Filament | แก้บั๊กเท่านั้น |
| 1.x | 3.x | 8.1+ | ตาม Filament | แก้บั๊กเท่านั้น |
ใช้ Filament 5 อยู่บน PHP 8.2 หรือ Laravel 11 ให้ใช้ 3.x (^3.0) ส่วนโปรเจกต์ใหม่ใช้ 4.x
ตั้งแต่ 4.1 ต้องการ Filament 5.10.1 ขึ้นไป ถ้า Filament ในโปรเจกต์เก่ากว่านั้น composer จะติดตั้ง 4.0.x ให้แทน
วิธีติดตั้ง
Run คำสั่ง composer require เพื่อติดตั้ง Package
composer require phattarachai/filament-thai-date-picker
ทำการ publish ไฟล์ javascript ของ picker (ถ้าใน post-autoload-dump ของ composer.json มีคำสั่งนี้อยู่แล้ว ข้ามขั้นตอนนี้ได้)
php artisan filament:upgrade
วิธีใช้งาน ThaiDatePicker
ใช้เหมือน DatePicker ปกติ แต่เรียกใช้ class ThaiDatePicker แทน
use Phattarachai\FilamentThaiDatePicker\ThaiDatePicker; ThaiDatePicker::make('order_date') ->label('วันที่สั่งซื้อ') ->suffixIcon('heroicon-o-calendar')
แบบ มีเวลา
use Phattarachai\FilamentThaiDatePicker\ThaiDateTimePicker; ThaiDateTimePicker::make('transfer_at') ->label('เวลาที่โอน') ->suffixIcon('heroicon-o-calendar')
ช่อง input แสดงวันที่แบบ j M y (เช่น 11 ต.ค. 69) และ j M y H:i เมื่อมีเวลา
เปลี่ยนรูปแบบได้ด้วย displayFormat() ซึ่งใช้ format แบบ PHP เหมือน DatePicker ปกติ โดยปี Y และ y จะแสดงเป็นปี พ.ศ.
ThaiDatePicker::make('order_date') ->displayFormat('j F Y') // 11 ตุลาคม 2569 ThaiDateTimePicker::make('transfer_at') ->displayFormat('d/m/Y H:i:s') // 11/10/2569 14:30:00
ใช้ ThaiDateTimePicker::make('opens_at')->date(false) เป็นช่องเลือกเวลาอย่างเดียวได้ แสดงผลตาม time format ของ Filament
โดยปี พ.ศ.จะใช้สำหรับการแสดงผลเท่านั้น เวลาใช้งาน state เพื่อบันทึกลงฐานข้อมูลจะได้เป็นปี ค.ศ. ตามปกติ
$data = $this->form->getState(); // $data['order_date'] = '2024-05-17'
การแสดงวันที่ภาษาไทยใน Infolist
นอกจาก Datepicker แล้วใน package นี้เพิ่ม method thaidate() และ thaidatetime()
สำหรับช่วยการแสดงผล Infolist วันที่ปี พ.ศ. ภาษาไทย
use Filament\Infolists\Components\TextEntry; TextEntry::make('order_date') ->label('วันที่สั่งซื้อ') ->thaidate(), // 18 พ.ค. 67
use Filament\Infolists\Components\TextEntry; TextEntry::make('created_at') ->label('วันที่สร้าง') ->thaidatetime(), // 18 พ.ค. 67 12:05
ถ้า field วันที่เป็นค่า null ได้ และต้องการให้แสดงค่า default ให้ส่ง parameter default เข้าไป
use Filament\Infolists\Components\TextEntry; TextEntry::make('confirm_date') ->label('วันที่ยืนยัน') ->thaidate(default: '-'), // -
การแสดงวันที่ภาษาไทยใน Table Column
เช่นเดียวกับ Infolist package นี้เพิ่ม macro method thaidate() สำหรับการ format
การแสดงผลคอลัมน์วันที่เพื่อให้แสดงผลเป็นปี
พ.ศ. ภาษาไทย ได้เลย
use Filament\Tables; Tables\Columns\TextColumn::make('order_date') ->label('วันที่') ->thaidate() // สามารถระบุ date format ได้เหมือน function date_format ของ PHP // default format เป็น j M y // เช่น 18 พ.ค. 67
ถ้าเป็น วันที่และเวลาใช้ method thaidatetime()
use Filament\Tables; Tables\Columns\TextColumn::make('created_at') ->label('วันที่สร้าง') ->thaidatetime() // default format เป็น j M y H:i // เช่น 18 พ.ค. 67 12:00
ทั้ง thaidate() และ thaidatetime() ใน Table Column และ Infolist รับ parameter ชุดเดียวกัน
->thaidate(format: 'j F Y', timezone: 'Asia/Bangkok', default: '-') // 18 พฤษภาคม 2567
format— date format ของ PHP เช่นj F Yสำหรับชื่อเดือนเต็มtimezone— ถ้าไม่ระบุ จะใช้ timezone ของ column หรือ entry นั้นdefault— ข้อความที่แสดงเมื่อค่าเป็น null
ถ้าต้องการแสดงเวลาเป็นบรรทัดรองใต้วันที่ ใช้ timeDescription() กับ column ที่ cast เป็นวันที่
Tables\Columns\TextColumn::make('created_at') ->thaidate() ->timeDescription() // 18 พ.ค. 67 // 12:05
ผู้พัฒนา
พัฒนาและดูแลโดย บริษัท ภัทรชัย อาร์ทิซาน จำกัด (Phattarachai Artisan) บริษัทที่ปรึกษาและพัฒนาเว็บ ที่เรียนรู้และแบ่งปันกับชุมชน Laravel แพ็กเกจนี้แบ่งปันให้ชุมชนนำไปใช้และต่อยอดได้อย่างอิสระ
ดูแพ็กเกจอื่นของเราได้ที่ phattarachai.dev/open-source และติดต่อเราได้ที่ phattarachai.dev
License
The MIT License (MIT).
