Laravel Filament 中在新增页面可以通过mutateFormDataBeforeCreate
在表单保存前修改数据,但是在实际过程中发现,该方法默认无法获取表单中通过Repeater
组件设置的关联数据,只能获取基础的表单数据。
protected function mutateFormDataBeforeCreate($data): array
{
dd($data);
}
比如我创建了一个订单表单,其中购买物品为一对多关联数据,通过Repeater
组件设置。这里只能输出订单的基础数据,不包括Repeater
组件中的物品数据。
解决办法是给Repeater
组件设置:dehydrated()
属性,再次打印数据,即可包含关联数据了。
Repeater::make('outboundMedicines')
->relationship()
->schema([
FormsComponentsSelect::make('medicine_id')
->label('药品')
->options(Medicine::options())
->required()
->distinct()
->disableOptionsWhenSelectedInSiblingRepeaterItems()
->searchable()
])
->dehydrated()