dddeeemmmooonnn / nova-multicolumn-filter
一个 Laravel Nova 多列过滤器。
v0.6.3
2020-07-20 17:29 UTC
Requires
- php: >=7.1.0
- laravel/nova: >=2.0.7
README
多列过滤器
演示
安装
在您的 Laravel Nova 项目中运行此命令
composer require dddeeemmmooonnn/nova-multicolumn-filter
使用方法
简化版
new NovaMulticolumnFilter([
'column' => '', //columns
],
$manual_update = false, // Apply filter with the button
$default_column_type = 'text', // Default input type
$name = 'filter' // Filter name
),
详细版
预期用途:扩展过滤器,添加不同的选项和操作符,在构造函数中使用与列声明一起使用。或者再次扩展,并在那里添加列声明。
使用 artisan 创建过滤器
$ php artisan nova:filter UserFilter
从 NovaMulticolumnFilter 扩展您的过滤器,并自定义操作符、选项和列。
综合示例
use dddeeemmmooonnn\NovaMulticolumnFilter\NovaMulticolumnFilter; class UserFilter extends NovaMulticolumnFilter { public $name = 'Filters'; protected $columns = [ // Simple text column declaration 'column1' => '', // Customizing all 'column2' => [ 'type' => 'email', 'label' => 'E-mail', 'operators' => [ '=' => '=', //... ], 'defaultOperator' => '=', 'defaultValue' => 'admin@admin.com', 'preset' => true, 'apply' => 'customApply', 'placeholder' => 'input placeholder' ], // For checkboxes 'column3' => [ 'type' => 'checkbox', 'label' => 'Checkbox', 'defaultValue' => 'anything', // Not empty = checked ], // Select type, options in array 'column4' => [ 'type' => 'select', 'label' => 'Select', 'options' => [ '1' => 'First', '2' => 'Second', //... ], 'defaultValue' => '1', ], // Select type, options in optionsCustomOptions() method 'column5' => [ 'type' => 'select', 'label' => 'Select again', 'options' => 'customOptions', 'defaultValue' => '1', ], // operators in operatorsCustomOperators() method 'column6' => [ 'type' => 'number', 'label' => 'Number', 'operators' => 'customOperators', 'defaultValue' => '1', ], // Date type 'column7' => [ 'type' => 'date', 'label' => 'Date', ], // Using one db column in different declarations 'column8' => [ 'type' => 'date', 'label' => 'Date', 'column' => 'column7', ], ]; protected function operatorsCustomOperators() { return [ '=' => 'Equals', '>' => 'Greater', '<' => 'Less', ]; } protected function optionsCustomOptions() { return [ '1' => 'One', '2' => 'Two', '3' => 'Three', ]; } protected function applyCustomApply($query, $column, $operator, $value) { return $query->where($column, $operator, $value); } //Also you can override default values protected $default_column_type = 'text'; protected $manual_update = false; protected function operatorsDefault() { return [ '=' => '=', '>' => '>', '>=' => '>=', '<' => '<', '<=' => '<=', 'LIKE' => 'Like', ]; } }
列选项
-
type - 输入类型
- select - 必需的选项,操作符
=
- date - 在 apply() 函数中使用 whereDate
- checkbox - 操作符
=
- text, email, number 和其他 <input type="***"/>
- select - 必需的选项,操作符
-
label - 列标签
-
operators - 列的操作符列表。数组
['value' => 'label']
或表示方法名称的字符串。方法必须声明为operatorsYourName
-
options - 对于
select
类型,类似于 operators,但方法命名以options
开头 -
defaultOperator
-
defaultValue
-
preset - 当过滤器为空时预设列,在打开过滤器菜单后应用
-
column - 列名称,如果您想为一个列使用多个类型
-
apply - 自定义 apply 方法,用于过滤列
-
placeholder - <input> 提示
本地化
添加到 nova 语言的 json 文件中(resources/lang/vendor/nova/<lang>.json)
"multicolumn.select_empty_label": "—",
"multicolumn.add": "Add",
"multicolumn.apply": "Apply"
作者
- Dmitry Turov dddeeemmmooonnntrue@gmail.com
此过滤器灵感来源于 philperusse/nova-column-filter 和 beyondcode/nova-filterable-cards