我正在使用Laravel的form request validation,我发现它非常有用,并且使我的控制器更加整洁。
我的更复杂的验证部分,如果Validator
失败,应该使用用户的旧输入返回上一页。
我有时也必须指定一个命名的错误包,它似乎不会作为请求表单的一个选项内置。
不幸的是,默认情况下,这个附加错误函数似乎没有表单请求验证程序。
目前我有:
$validator = Validator::make($request->all(), [
'id' => 'required|numeric',
'name' => 'required|alpha_spaces',
'email' => 'required|email',
]);
if ($validator->fails()) {
return back()
->withErrors($validator, 'aNamedErrorBag')
->withInput();
}
有没有办法将规则提取到请求验证程序文件中,如果验证程序失败,是否可以通过输入返回指定的错误包aNamedErrorBag
?
非常感谢
答案 0 :(得分:0)
FormRequest
类将错误包的名称作为属性进行处理:
/**
* The key to be used for the view error bag.
*
* @var string
*/
protected $errorBag = 'default';
您可以将此值更改为您希望将错误发送到的errorBag。只需将其作为属性添加到自定义请求类中。
修改强>
这是FormRequest在验证错误上返回的内容:
/**
* Get the proper failed validation response for the request.
*
* @param array $errors
* @return \Symfony\Component\HttpFoundation\Response
*/
public function response(array $errors)
{
if ($this->expectsJson()) {
return new JsonResponse($errors, 422);
}
return $this->redirector->to($this->getRedirectUrl())
->withInput($this->except($this->dontFlash))
->withErrors($errors, $this->errorBag);
}