Laravel Filament:根据模型字段禁用指定记录的编辑/删除按钮
在Filament表格中根据模型字段禁用编辑/删除按钮
要实现根据模型的is_editable和is_deletable字段控制按钮的禁用状态,只需在Resource类的表格配置中,为对应操作按钮添加条件判断即可:
1. 配置编辑按钮
在表格的actions数组里,给EditAction添加disabled方法,传入基于当前记录的闭包判断:
Tables\Actions\EditAction::make() ->disabled(fn($record) => !$record->is_editable),
2. 配置删除按钮
同理,给DeleteAction添加对应的判断:
Tables\Actions\DeleteAction::make() ->disabled(fn($record) => !$record->is_deletable),
完整示例代码
use Filament\Tables; use Filament\Tables\Table; use Filament\Resources\Resource; class YourModelResource extends Resource { // 其他配置... public static function table(Table $table): Table { return $table ->columns([ // 你的列定义,比如: Tables\Columns\TextColumn::make('name'), Tables\Columns\IconColumn::make('is_editable') ->boolean(), Tables\Columns\IconColumn::make('is_deletable') ->boolean(), ]) ->actions([ Tables\Actions\EditAction::make() ->disabled(fn($record) => !$record->is_editable), Tables\Actions\DeleteAction::make() ->disabled(fn($record) => !$record->is_deletable), ]); } // 其他方法... }
可选:隐藏按钮而非禁用
如果你希望直接隐藏按钮(而不是灰掉),可以把disabled换成visible:
Tables\Actions\EditAction::make() ->visible(fn($record) => $record->is_editable),
额外注意
确保你的模型中已正确设置字段类型转换,避免布尔值判断异常:
// 在对应模型类中 protected $casts = [ 'is_editable' => 'boolean', 'is_deletable' => 'boolean', ];
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

