harrald / nova-combobox-filter
一个 Laravel Nova 的 combobox 过滤器。支持选择多个项目
1.1.1
2024-02-20 22:06 UTC
Requires
- php: ^7.3|^8.0
- laravel/nova: ^4.0
README
此组件基于 Headless UI Combobox 组件,并增加了 Laravel Nova 的多选过滤器。
要求
php: >=7.3
laravel/nova: ^4.0
安装
通过 Composer 安装
composer require harrald/nova-combobox-filter
用法
nova-combobox-filter
扩展了 Nova 选择过滤器。因此,其实现逻辑与实现方式相同。
过滤器
在 App/Nova/Filters
中创建一个新的过滤器类,并让它继承 \Harrald\NovaComboboxFilter\NovaComboboxFilter
类。
使用以下格式
<?php namespace App\Nova\Filters; use Harrald\NovaComboboxFilter\NovaComboboxFilter; use Illuminate\Http\Request; use Illuminate\Support\Collection; class OpenPaidStateFilter extends NovaComboboxFilter { /** * The displayable name of the filter. * * @var string */ public $name = 'State'; /** * The name of the column to filter on */ protected function columnName(): string { return 'state'; } /** * Get the filter's available options. */ public function options(Request $request): Collection { return Collection::make([ 'Open' => 'open', 'Paid' => 'paid', ]); } }
$name
属性是过滤器的显示名称。columnName
方法必须返回要过滤的列的名称options
方法应返回一个包含键/值对的Illuminate\Support\Collection
。
具有动态选项
public function options(Request $request): Collection { return User::all()->pluck('id', 'name'); }
资源
在您的新资源中使用此过滤器。遵循与其他 Nova 过滤器相同的逻辑。
/** * Get the filters available for the resource. * * @param NovaRequest $request * @return array */ public function filters(NovaRequest $request): array { return [ OpenPaidStateFilter::make(), ]; }
屏幕截图
致谢
此包受 optimistdigital/nova-multiselect-filter 的启发。
许可证
此项目是开源软件,许可协议为 MIT。