Select filters
简介
通常,你可能希望使用 Selcet 字段而非复选框。你希望用户可以根据一组预定义选项过滤列字段时,尤其如此。为此,你可以使用 SelectFilter 类创建一个过滤器:
use Filament\Tables\Filters\SelectFilter;
SelectFilter::make('status')
->options([
'draft' => 'Draft',
'reviewing' => 'Reviewing',
'published' => 'Published',
])
通过 options() 传递给过滤器的选项,与传递给 Select 字段的方式一致:
除了允许静态值之外,options() 方法也可以接受函数来动态计算其值。你可以将多个 utility 作为参数注入到函数中。
Learn more about utility injection.| Utility | Type | Parameter | Description |
|---|---|---|---|
| Filter | Filament\Tables\Filters\BaseFilter | $filter | The current filter instance. |
| Livewire | Livewire\Component | $livewire | The Livewire component instance. |
| Table | Filament\Tables\Table | $table | The current table instance. |
自定义 Select 过滤器使用的字段
Select 过滤器不要求自定义 query() 方法。用于设置查询范围的字段名是过滤器的名称。如果要对此进行自定义,请使用 attribute() 方法:
use Filament\Tables\Filters\SelectFilter;
SelectFilter::make('status')
->options([
'draft' => 'Draft',
'reviewing' => 'Reviewing',
'published' => 'Published',
])
->attribute('status_id')
除了允许静态值之外,attribute() 方法也可以接受函数来动态计算其值。你可以将多个 utility 作为参数注入到函数中。
Learn more about utility injection.| Utility | Type | Parameter | Description |
|---|---|---|---|
| Filter | Filament\Tables\Filters\BaseFilter | $filter | The current filter instance. |
| Livewire | Livewire\Component | $livewire | The Livewire component instance. |
| Table | Filament\Tables\Table | $table | The current table instance. |
多选 Select 过滤器
这将允许用户选择多个选项,将该过滤器应用到表格。比如,状态过滤器可能向用户展示一些状态选项供用户选取并供表格过滤使用。当用户选择多个选项时,表格会过滤显示匹配所选选项的记录。你可以使用 multiple() 方法启用该行为:
use Filament\Tables\Filters\SelectFilter;
SelectFilter::make('status')
->multiple()
->options([
'draft' => 'Draft',
'reviewing' => 'Reviewing',
'published' => 'Published',
])