使用Laravel内置的身份验证(php artisan make:auth
)我在同一页面上显示注册和登录表单。但是,由于两个表单都具有相同的字段(电子邮件和密码),因此一个表单的错误也会显示在另一个表单上 - 即当您注册时收到的电子邮件或使用不正确的电子邮件登录时。
我已通过将sendFailedLoginResponse
从AuthenticatesUsers.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。
答案 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中工作)