keizah7 / custom-date-filter
Laravel Nova 过滤器包。自定义日期过滤器
v1.1.0
2020-09-17 18:39 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-10 21:13:53 UTC
README
数据过滤器
Laravel Nova 自定义日期过滤器
使用此包,您可以设置自定义日期过滤器 format
和其他选项,这是最新版本的 Nova 所不支持的功能。
安装
在任何 Nova 应用程序中安装您的包
composer require keizah7/nova-date-filter
您可以使用 nova:filter
命令生成过滤器。默认情况下,Nova 会将新生成的过滤器放置在 app/Nova/Filters
目录中
php artisan nova:filter TimestampFilter
使用 CustomDateFilter
扩展您的过滤器类
use Keizah7\CustomDateFilter\CustomDateFilter;
class TimestampFilter extends CustomDateFilter
{
//
}
一旦定义了过滤器,您就可以将其附加到资源上。Nova 生成的每个资源都包含一个 filters
方法。要将过滤器附加到资源上,您只需将其添加到此方法返回的过滤器数组中即可
/**
* Get the filters available for the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function filters(Request $request)
{
return [
new TimestampFilter(),
];
}
删除 TimestampFilter
中的 $component
变量
/**
* The filter's component.
*
* @var string
*/
public $component = 'select-filter'; // remove this line
完成这些步骤后,您可以在 nova 资源中看到日期过滤器。
用法
过滤器 apply
方法负责修改查询以实现所需的过滤状态,因此您可以按需修改它或使用准备好的包方法
byTime
byHour
fromHour
toHour
byDay
fromDay
toDay
/**
* Apply the filter to the given query.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder
*/
public function apply(Request $request, $query, $value)
{
return $this->byHour($query, 'created_at', $value);
}
设置
默认过滤器设置是
'altFormat' => 'Y-m-d H:i'
'dateFormat' => 'Y-m-d H:i'
'enableTime' => true
'enableSeconds' => false
'firstDayOfWeek' => 1
您可以通过修改过滤器类的 options
方法来更改它们
/**
* Get the filter's available options.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function options(Request $request)
{
return [
'altFormat' => 'Y-m-d H:i:S',
'dateFormat' => 'Y-m-d H:i:S',
'enableTime' => true,
'enableSeconds' => true,
'firstDayOfWeek' => 7,
];
}
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件