表单请求验证返回旧输入错误

时间:2017-06-06 16:52:00

标签: php laravel validation laravel-5.4

我正在使用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

非常感谢

1 个答案:

答案 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);
}