如何点击Laravel Filament表格应用筛选按钮后隐藏筛选弹窗
解决Filament Table筛选模态框应用后不关闭的问题
要实现点击「Apply Filters」后自动隐藏筛选模态框,你可以通过自定义筛选模态框的提交动作来实现,下面是两种实用方案:
方案一:针对单个筛选器配置
在你的getTableFilters()方法中,给每个筛选器添加configureUsing方法,覆盖默认的提交按钮行为,加入关闭模态框的逻辑:
public static function getTableFilters(): array { return [ // 示例:状态筛选器 SelectFilter::make('status') ->options([ Status::Active->value => Status::Active->getLabel(), Status::Deactive->value => Status::Deactive->getLabel(), ]) ->configureUsing(function (Filter $filter) { $filter->modalSubmitAction(function (Action $action) { return $action ->label('Apply Filters') ->closeModal(); // 关键:提交后关闭模态框 }); }), // 其他筛选器同理... ]; }
如果你的筛选器是直接在table()方法内定义的,也可以直接链式调用configureUsing来配置。
方案二:全局统一配置所有筛选器
如果希望项目中所有表格的筛选模态框都能在应用后自动关闭,可以在AppServiceProvider的boot()方法中添加全局配置:
use Filament\Tables\Filters\Filter; use Filament\Tables\Actions\Action; public function boot() { Filter::configureUsing(function (Filter $filter) { $filter->modalSubmitAction(function (Action $action) { return $action->closeModal(); }); }); }
注意事项
- 该方法适用于Filament v3及以上版本,
closeModal()是Filament内置的动作方法,无需额外引入依赖 - 你代码中使用的
deferFilters()不会影响此逻辑,因为closeModal()是前端层面的模态框关闭动作,和筛选的延迟加载机制不冲突
内容的提问来源于stack exchange,提问作者Pradeep Kumar
相关产品推荐
相关产品推荐

