有的时候我们需要在表单保存前进行一些操作,比如应用一些特殊的验证规则等。在 Laravel Filament 中,表单新增和表单更新前均有对应的事件。
新增记录
保存前自定义数据
有时,你需要在保存到数据库之前修改表单数据。你可以定义 mutateFormDataBeforeCreate()
方法,使其接收 $data
数组作为参数,并返回修改过的版本:
protected function mutateFormDataBeforeCreate(array $data): array
{
$data['user_id'] = auth()->id();
return $data;
}
此外,如果你是通过模态框 Action 新建记录,请查阅 Action 文档。
自定义新建过程
你可以在新建页面类中使用 handleRecordCreation()
方法调整记录创建方式:
use IlluminateDatabaseEloquentModel;
protected function handleRecordCreation(array $data): Model
{
return static::getModel()::create($data);
}
此外,如果你是通过模态框 Action 新建记录,请查阅 Action 文档。
编辑记录
填充表单前自定义数据
你可能想要在记录填充到表单前修改数据。你可以通过定义编辑页面类中的 mutateFormDataBeforeFill()
方法修改 $data
数组,并在填充到表单前返回修改后的版本:
protected function mutateFormDataBeforeFill(array $data): array
{
$data['user_id'] = auth()->id();
return $data;
}
此外,如果你在模态框 Action 中编辑记录,请查看 Action 文档。
保存前自定义数据
有时,你需要在最终保存到数据库之前修改表单数据。你可以在编辑页面类中定义 mutateFormDataBeforeSave()
方法,使其接收 $data
数组作为参数,并返回修改过的版本:
protected function mutateFormDataBeforeSave(array $data): array
{
$data['last_edited_by_id'] = auth()->id();
return $data;
}
此外,如果你在模态框 Action 中编辑记录,请查看 Action 文档。
在以上操作中,均可以调用:
$this->halt();
随时终止操作。