简介
定义验证规矩来验证传入的 HTTP 请求。
创建表单验证器
使用 artisan 的 make:request
来创建表单验证类,建议验证类名称与实际的表单名对应
php artisan make:request StoreBlogPost
新生成的类保存在 app/Http/Requests
目录下
开启表单验证器
打开表单的验证权限
//判断用户是否有权限进行此请求。
public function authorize()
{
return true;
}
编写表单验证规矩
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
自定义验证属性名称
将验证的数据名称自定义
public function attributes()
{
return [
'password2' => '确认密码',
];
}
自定义错误消息
通过重写表单请求的 messages
方法来自定义错误消息。此方法应返回属性 / 规则对及其对应错误消息的数组:
文件在 app/Http/Requests
目录下
//获取已定义验证规则的错误消息。
public function messages(){
return [
'title.规则' => '自定义提示内容',
'body.required' => 'A message is required',
];
}
在控制器中使用
通过依赖注入实现使用验证器。不需要在控制器中写任何验证逻辑:
//引入
use App\Http\Requests\StoreBlogPost;
//在控制器中使用
public function store(StoreBlogPost $request)
{
// 获取通过验证的数据...
$validated = $request->validated();
}
常用验证规则
忽略指定 ID
在进行字段唯一性验证时忽略指定 ID ,常用于「更新个人资料」页面会包含用户名,邮箱等,如果仅更新邮箱不更新用户名时,不抛出异常。
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);