You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:49:53