Skip to content
全部文档

开关列

简介

开关列允许你在表格中渲染开关按钮,用于更新该数据库记录,而无需打开新页面或模态框:

php
use Filament\Tables\Columns\ToggleColumn;

ToggleColumn::make('is_admin')
开关列开关列

生命周期钩子

可使用钩子在开关生命周期的各个时刻执行代码:

php
ToggleColumn::make()
    ->beforeStateUpdated(function ($record, $state) {
        // Runs before the state is saved to the database.
    })
    ->afterStateUpdated(function ($record, $state) {
        // Runs after the state is saved to the database.
    })

安全性

授权

开关列在保存更改前不会自动检查 Laravel 模型策略(Model Policies)。当用户通过开关列更新值时,Filament 会检查该列是否 disabled(),但不会运行任何 update 策略门控检查。这意味着,只要用户能在表格中看到某条记录且该列未被禁用,即可更新该列的值,而不受你定义的任何 update 策略约束。若需限制谁可以编辑此列,应使用 disabled() 方法,根据你自己的授权逻辑有条件地阻止编辑,例如 disabled(fn ($record) => $record->user_id !== auth()->id())。或者,考虑使用完整的编辑页面或模态操作,在那里会强制执行 Filament 的资源授权。