开关
简介
开关组件与 复选框 类似,可让你与布尔值交互。
use Filament\Forms\Components\Toggle;
Toggle::make('is_admin')

若使用 Eloquent 保存布尔值,请务必为模型属性添加 boolean 类型转换(cast):
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'is_admin' => 'boolean',
];
}
// ...
}为开关按钮添加图标
开关还可以使用 图标 表示按钮的「开」与「关」状态。要为「开」状态添加图标,使用 onIcon() 方法;要为「关」状态添加图标,使用 offIcon() 方法:
use Filament\Forms\Components\Toggle;
use Filament\Support\Icons\Heroicon;
Toggle::make('is_admin')
->onIcon(Heroicon::Bolt)
->offIcon(Heroicon::User)TIP
除了允许静态值外,onIcon() 和 offIcon() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到这些函数中。


自定义开关按钮颜色
你还可以自定义表示开关「开」或「关」状态的 颜色。要为「开」状态添加颜色,使用 onColor() 方法;要为「关」状态添加颜色,使用 offColor() 方法:
use Filament\Forms\Components\Toggle;
Toggle::make('is_admin')
->onColor('success')
->offColor('danger')TIP
除了允许静态值外,onColor() 和 offColor() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到这些函数中。




将标签置于上方
开关字段有两种布局模式:行内(inline)与堆叠(stacked)。默认为行内。
开关为行内时,标签与其相邻:
use Filament\Forms\Components\Toggle;
Toggle::make('is_admin')
->inline()

开关为堆叠时,标签位于其上方:
use Filament\Forms\Components\Toggle;
Toggle::make('is_admin')
->inline(false)TIP
除了允许静态值外,inline() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。


开关校验
除 校验 页面列出的全部规则外,还有专门适用于开关的额外规则。
接受校验
你可以使用 accepted() 方法确保开关处于「开」状态:
use Filament\Forms\Components\Toggle;
Toggle::make('terms_of_service')
->accepted()可选地,你可以传入布尔值来控制是否应用该校验规则:
use Filament\Forms\Components\Toggle;
Toggle::make('terms_of_service')
->accepted(FeatureFlag::active())TIP
除了允许静态值外,accepted() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。
拒绝校验
你可以使用 declined() 方法确保开关处于「关」状态:
use Filament\Forms\Components\Toggle;
Toggle::make('is_under_18')
->declined()可选地,你可以传入布尔值来控制是否应用该校验规则:
use Filament\Forms\Components\Toggle;
Toggle::make('is_under_18')
->declined(FeatureFlag::active())TIP
除了允许静态值外,declined() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。