在開發一個需要處理大量數據的管理系統時,如何讓用戶能夠輕松地篩選特定日期范圍內的數據成為了一個挑戰。Filament面板雖然提供了基本的日期篩選功能,但無法滿足用戶快速選擇常用日期范圍(如“今天”、“昨天”等)的需求。為了解決這個問題,我嘗試了多種方法,最終找到了malzariey/filament-daterangepicker-Filter這個庫。
使用這個庫,你可以輕松地在Filament面板中添加一個日期范圍選擇器和篩選器。它支持用戶通過特定日期范圍或預定義的日期范圍(如“今天”、“昨天”等)來篩選數據。安裝這個庫非常簡單,只需通過composer進行安裝:
composer require malzariey/filament-daterangepicker-filter
安裝后,你可以選擇發布翻譯文件和視圖文件,以確保界面符合你的需求:
php artisan vendor:publish --tag="filament-daterangepicker-filter-translations" php artisan vendor:publish --tag="filament-daterangepicker-filter-views"
這個庫提供了多種使用方式,既可以作為一個字段使用,也可以作為一個篩選器使用。以下是作為字段和篩選器的示例代碼:
use MalzarieyFilamentDaterangepickerFilterFieldsDateRangePicker; use MalzarieyFilamentDaterangepickerFilterFiltersDateRangeFilter; DateRangePicker::make('created_at'), DateRangeFilter::make('created_at'),
此外,這個庫還提供了許多可選配置,例如設置時區、指定初始日期范圍、設置最小和最大日期、自定義顯示格式等。以下是一些常用的配置示例:
use MalzarieyFilamentDaterangepickerFilterFiltersDateRangeFilter; use MalzarieyFilamentDaterangepickerFilterFieldsDateRangePicker; use CarbonCarbon; // 設置時區為UTC DateRangeFilter::make('created_at')->timezone('UTC') DateRangePicker::make('created_at')->timezone('UTC') // 設置初始日期范圍為今天 DateRangeFilter::make('created_at')->startDate(Carbon::now())->endDate(Carbon::now()) DateRangePicker::make('created_at')->startDate(Carbon::now())->endDate(Carbon::now()) // 使用預定義的日期范圍 DateRangeFilter::make('created_at')->defaultToday() DateRangePicker::make('created_at')->defaultToday() // 設置最小和最大日期 DateRangeFilter::make('created_at')->minDate(Carbon::now()->subMonth())->maxDate(Carbon::now()->addMonth()) DateRangePicker::make('created_at')->minDate(Carbon::now()->subMonth())->maxDate(Carbon::now()->addMonth())
使用malzariey/filament-daterangepicker-filter庫后,我的管理系統的用戶體驗得到了顯著提升。用戶可以更直觀、更快速地篩選出他們需要的數據,極大地提高了工作效率。這個庫不僅功能強大,而且易于集成和配置,是處理日期范圍篩選問題的絕佳選擇。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END