使用 laravel nova 验证字段
在使用 laravel nova 关联资源中说到使用 nova 定义了一些表之间的关联关系进行一些设定。
在新增和编辑后台资源的时候,会经常使用到一些验证,比如说:字段不允许为空,字段必须是邮箱格式等等。
添加字段的验证规则
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Title')->rules('required')->sortable(), // 可以使用字符串的形式定义规则
Markdown::make('Body')->rules(['required']), // 使用数组形式定义规则
DateTime::make('Publish At')->hideFromIndex()
->rules('aftet_or_equal:today'),
DateTime::make('Publish Until')->hideFromIndex()
->rules('aftet_or_equal:publish_at'),
Boolean::make('Active', 'is_published'),
Select::make('category')->options([
'category-1' => 'Category One',
])->hideWhenUpdating()->rules(['required']),
BelongsTo::make('User')->rules(['required']),
BelongsToMany::make('Tags'),
];
}
这样,定义的规则在新增和编辑的时候都会生效,如果一些验证规则只需要在新增或编辑的时候生效,那么需要使用creationRules
或updateRules
Text::make('Email')
->sortable()
->rules('required', 'email', 'max:255')
->creationRules('unique:users,email')
->updateRules('unique:users,email,{{resourceId}}'),
上面的内容可以参考
app\Nova\User.php
文件中的fields
方法中验证规则的定义。