开始
概述
过滤器允许你在数据上定义特定的约束条件,允许用户设置查询范围,以查找他们需要的信息。你可以将其放在 $table->filters() 中:
use Filament\Tables\Table;
public function table(Table $table): Table
{
return $table
->filters([
// ...
]);
}

过滤器可以使用静态的 make() 方法,并传入唯一名称创建。然后,你需要传递一个回调函数给 query(),设置过滤器的查询范围:
use Filament\Tables\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;
Filter::make('is_featured')
->query(fn (Builder $query): Builder => $query->where('is_featured', true))
可用过滤器
默认情况下,使用 Filter::make() 方法将会渲染一个复选框表单组件。当复选框选中时,查询(query()) 会被激活。
- 你也可以使用 Toggle 替换 checkbox 。
- 你可以使用带有 Select 字段的三元过滤器替换复选框,允许用户在三种状态(通常为 "true"、"false" 及 "空值")之间选择。这对于过滤 nullable 的布尔字段非常有用。
- 垃圾过滤器是一个预制的三元过滤器,允许你过滤可软删除的记录。
- select 过滤器,允许用户从选项列表 中选择,并使用选中的值进行过滤。
- 查询构造器(Query builder)允许用户使用高级用户界面联合约束条件创建复杂的过滤器。
- 你也可以使用其他表单字段自定义过滤器。
设置标签
默认情况下,过滤器的标签是基于过滤器名生成。使用 label() 方法,可以自定义标签:
use Filament\Tables\Filters\Filter;
Filter::make('is_featured')
->label('Featured')
可选地,使用 translateLabel(),你也可以使用 Laravel 本地化特性让标签自动翻译:
use Filament\Tables\Filters\Filter;
Filter::make('is_featured')
->translateLabel() // Equivalent to `label(__('Is featured'))`
