Laravel 5.4注册失败时命名错误包

时间:2017-07-12 23:23:45

标签: php forms laravel authentication laravel-5.4

使用Laravel内置的身份验证(php artisan make:auth)我在同一页面上显示注册和登录表单。但是,由于两个表单都具有相同的字段(电子邮件和密码),因此一个表单的错误也会显示在另一个表单上 - 即当您注册时收到的电子邮件或使用不正确的电子邮件登录时。

我已通过将sendFailedLoginResponseAuthenticatesUsers.php复制到我的LoginController.php并更改了以下内容,更改了登录表单的指定错误包(https://laravel.com/docs/5.4/validation#named-error-bags) / p>

->withErrors($errors);

->withErrors($errors, 'login');

还要更改我的登录刀片错误输出:

$errors->has()

$errors->login->has()

但是,我试图在注册过程中更改命名错误包以确认验证失败,但很难找到我可以在哪里或如何做到这一点。似乎失败的注册永远不会超过RegistersUsers.php中的以下内容,但我无法追踪我可以扩展的内容/位置并添加withErrors

$this->validator($request->all())->validate();

我知道还有另一种方法可以通过在某个地方设置protected $errorBag = 'register';来实现这一目标,但我无法解决问题。

任何帮助都会受到赞赏,因为我才开始使用Laravel。

1 个答案:

答案 0 :(得分:0)

我在注册功能上遇到了同样的问题,最终我在registerController中覆盖了注册功能,并尝试将捕获移至$this->validator($request->all())->validate。所以现在看起来像

try {
    $this->validator($request->all())->validate();
} catch (ValidationException $e) {
    $e->errorBag('register');

    throw $e;
}

它似乎像一种魅力! (我在laravel 5.6中工作,但我确定它会在laravel 5.4中工作)