keizah7/custom-date-filter

Laravel Nova 过滤器包。自定义日期过滤器

v1.1.0 2020-09-17 18:39 UTC

This package is auto-updated.

Last update: 2024-09-10 21:13:53 UTC


README

Latest Version on Packagist Total Downloads PRs Welcome Chat HitCount Forks Stars Watchers Contributors

数据过滤器

Laravel Nova 自定义日期过滤器

使用此包,您可以设置自定义日期过滤器 format 和其他选项,这是最新版本的 Nova 所不支持的功能。

custom date filter

安装

在任何 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)。有关更多信息,请参阅 许可证文件