如何在Filament上做到“无限”多级子类别?
这就是我现在拥有的:
分类表:
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->unsignedInteger('parent_id');
$table->timestamps();
});
类别资源:
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')
->label('Category')
->required()
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name')
->label('Category'),
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\Action::make('subCategory'),
]);
}
当用户单击“子类别”按钮时,同一个表格如何导航到子类别并允许用户向该子类别添加另一个类别?
首先您必须定义表单(模态)的字段,然后设置父类别并保存数据。 像这样的东西:
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\Action::make('subcategory')
->label('Add subcategory')
->form([
Forms\Components\TextInput::make('name')
->required()
->label('Category')
// ...
])->action(function (Category $record, $data) {
$data['parent_id'] = $record->id;
static::getModel()::create($data);
}),
不要忘记在类别中添加关系:
类别:
public function parent(): BelongsTo
{
return $this->belongsTo(Category::class, 'parent_id');
}
public function subcategories(): HasMany
{
return $this->hasMany(Category::class, 'parent_id');
}