philperusse/nova-column-filter

Laravel Nova 列查询器过滤器

v0.3.0 2019-02-25 14:02 UTC

This package is auto-updated.

Last update: 2024-09-26 02:22:20 UTC


README

适用于 Nova > v1.1.8 的 Laravel Nova 列查询器过滤器

在 Nova v.1.3.2 之前,使用 0.2.1 版本

在 Nova v.1.1.8 之前,使用 0.1.1 版本

演示

Demo

安装

在您的 Laravel Nova 项目中运行此命令

composer require philperusse/nova-column-filter

用法

使用 artisan 创建过滤器

 $ php artisan nova:filter UserColumnFilter 

使用 ColumnFilter 类扩展您的过滤器类,而不是 Nova 的基础 Filter 类,并在选项中添加您希望过滤的列

use \philperusse\Filters\ColumnFilter as Filter;

class ColumnFilter extends Filter
{
  
   /**
    * 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 )
  {
     $args = collect($value)->values()->filter(); //Remove any empty keys.
     if($args->isEmpty())
          return $query;
		  
      return $query->where(...$args->all());
  }
  
  /**
   * Get the filter's available options.
   *
   * @param  \Illuminate\Http\Request  $request
   * @return array
   */
  public function options( Request $request ) : array
    {
        return array_merge(parent::options($request), [
            'columns' => [
                'name'      => 'Name',
                'age'       => 'Age',
            ]
        ]);
    }
}

自定义

您可以通过覆盖 filters 选项中的 operators 键来自定义运算符列表。

use philperusse\Filters\ColumnFilter as Filter;

class ColumnFilter extends Filter
{
    public function options( Request $request ) 
    {
        return array_merge(parent::options($request), [
            'columns' => [
                'name'      => 'Name',
                'age'       => 'Age',
            ],
            'operators' => [
                '='     => '=',
                '>'     => '>',
                '>='    => '≥',
                '<'     => '&lt;',
                '<='    => '&le;',
            ]
        ]);
    }

    protected function componentName()
    {
        return 'column-filter';
    }
}

贡献

欢迎所有贡献。请发送 PR

作者

该过滤器基于 64Robots 的日期过滤器 和其 自定义过滤器选择组件

许可证

此软件包是开源软件,根据 MIT 许可证 许可。