Laravel Filament 表单保存前的事件说明

有的时候我们需要在表单保存前进行一些操作,比如应用一些特殊的验证规则等。在 Laravel Filament

有的时候我们需要在表单保存前进行一些操作,比如应用一些特殊的验证规则等。在 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();

随时终止操作。