扫码一下
查看教程更方便
validator
如果我们不想在request上使用validate
方法,那么我们可以使用validator facade
中的make
方法手动创建一个验证器实例:
all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->witherrors($validator)
->withinput();
}
// store the blog post...
}
}
make
方法的第一个参数是需要验证的请求数据,第二个参数是用于验证的验证规则。
如果验证失败,可以使用witherrors
方法将错误消息保存到session会话中。使用此方法时,$errors
变量将在重定向后自动绑定到视图中,从而使我们可以很容易地将其显示在页面上。witherrors
方法的参数可以是验证器,一个messagebag
或php 数组。
如果我们想手动创建一个验证器实例,但仍然利用请求validate
方法提供的自动重定向功能,则可以在验证器实例上调用validate
方法。如果验证失败,则将自动重定向用户,或者在ajax请求的情况下,将返回json响应:
validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
])->validate();
如果验证失败,则可以使用validatewithbag
方法将错误消息存储在命名错误包中:
validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
])->validatewithbag('post');
如果我们在一个页面上有多个表单,则不妨为messagebag错误命名,从而使我们可以检索特定表单的错误消息。可以使用witherrors来实现,它的第二个参数则是用来指定该请求表单的错误信息的名称:
return redirect('register')
->witherrors($validator, 'login');
然后,我们可以从$errors 变量中访问为messagebag命名的实例:
{{ $errors->login->first('email') }}
验证程序还允许我们在验证完成后调用回调函数。这使我们可以轻松地执行进一步的验证,甚至可以将更多错误消息添加到消息集合中。可以用validator 实例上的after
方法实现:
$validator = validator::make(...);
$validator->after(function ($validator) {
if ($this->somethingelseisinvalid()) {
$validator->errors()->add('field', 'something is wrong with this field!');
}
});
if ($validator->fails()) {
//
}