Repeater
概述
Repeater 组件允许你输出重复表单组件的 JSON 数组:
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
Repeater::make('members')
->schema([
TextInput::make('name')->required(),
Select::make('role')
->options([
'member' => 'Member',
'administrator' => 'Administrator',
'owner' => 'Owner',
])
->required(),
])
->columns(2)
建议将 repeater 数据存储在数据库的 JSON
字段中。此外,如果你使用了 Eloquent,请确保该对该字段进行 array
cast。
上例可以明显看出,组件 Schema 在组件的 schema()
方法中定义:
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\TextInput;
Repeater::make('members')
->schema([
TextInput::make('name')->required(),
// ...
])
如果你想要使用可以以任何顺序重复的多个 Schema 块来定义 Repeater,请使用 Builder。
设置空默认项
使用 defaultItems()
方法,Repeater 可以创建特定数量的默认项:
use Filament\Forms\Components\Repeater;
Repeater::make('members')
->schema([
// ...
])
->defaultItems(3)
请注意,默认项只会表单中没有加载已有数据时创建。在面板资源内,它只会在创建页面生效,因为编辑页面始终回从模型中填充数据。