rpj / daterangepicker
为Laravel Nova 4提供简单的日期范围过滤器。
0.0.8
2024-04-29 19:17 UTC
Requires
- php: >=8.1
- laravel/nova: ^4.0
README
一个过滤器,用于Nova 4,使用Daterangepicker库显示日期范围选择器,而不是单个日期选择器。
安装
在您的nova项目中运行此命令:composer require rpj/daterangepicker
如何使用
在您的Nova资源中,只需在filters函数中添加DateRangeFilter类,并包含您希望用作过滤资源的列。
use Rpj\Daterangepicker\Daterangepicker; public function filters(Request $request) { return [ new Daterangepicker('created_at'), ]; }
此外,您还可以传递一个包含默认日期范围的字符串,以便在组件中使用。如果没有传递值,则默认设置为TODAY,但如果您想取消日期过滤器以显示所有记录,则可以使用DateHelper::ALL。
此外,我们添加了一个自定义日期范围选择器,允许用户指定按其值排序的列,以及在关联表中防止模糊的MySQL错误的情况下,您可以指定实际的表名以了解您所引用的实际列。这包括检查日期范围选择器的列以及按升序/降序方向排序的列。
use Rpj\Daterangepicker\Daterangepicker; use Rpj\Daterangepicker\DateHelper; public function filters(Request $request) { return [ new Daterangepicker('users.created_at', DateHelper::THIS_WEEK, 'users.name', 'desc'), ]; }
最后,我们添加了使用Carbon类设置自定义预设日期的选项。您还可以为日期范围组件设置最小和最大日期。
use Rpj\Daterangepicker\Daterangepicker; use Rpj\Daterangepicker\DateHelper; use Carbon\Carbon; public function filters(Request $request) { return [ (new Daterangepicker( 'users.created_at', DateHelper::THIS_WEEK, 'users.name', 'desc' )) ->setRanges([ 'Today' => [Carbon::today(), Carbon::today()], 'Yesterday' => [Carbon::yesterday(), Carbon::yesterday()], 'This week' => [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()], 'This month' => [Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth()], 'Last month' => [Carbon::now()->subMonth()->startOfMonth(),Carbon::now()->subMonth()->endOfMonth()], ]) ->setMaxDate(Carbon::today()) ->setMinDate(Carbon::today()->endOfYear()), ]; }