我在Laravel的一个页面上有两种不同的形式。 这是注册页面,包含注册和登录表单。当我在注册表单上出现错误时,登录表单上会出现相同的错误(参见图片)。解决这个问题的最佳方法是什么?
直接在我的表单下,我使用module.exports = function (router) {
router.get('/', function (req, res, next) {
passport.authenticate('PICK A VALID TYPE', function(err, user, info) {
// this custom callback will be executed once auth completes
// (either successfully or not
// put code in here to perform DB business logic, login, and redirect
})(req,res,next); <--- this executes the passport.authenticate middleware
})
};
来显示验证错误。
答案 0 :(得分:3)
如果控制器中的验证失败,您必须在重定向中指明是否是失败的登录或注册:
@include('errors.common')
现在,在您查看登录和注册表单的位置,请相应地加载@if(Session::has('loginFail')
@include('errors.common')
@endif
:
{{1}}
对注册表使用相同的原则。
答案 1 :(得分:1)
如果您使用AuthController.php
附带的Laravel
,则为另一种解决方案。
在注册表单中添加一个名为register
的隐藏字段,其值为1
。
在登录表单中添加名为login
的隐藏字段,其值为1
。
现在您可以控制何时显示如下错误:
// Registration
@if(!$errors->isEmpty())
@if(!empty(old('register')))
@include('errors.common')
@endif
@endif
// Login
@if(!$errors->isEmpty())
@if(!empty(old('login)))
@include('errors.common')
@endif
@endif
答案 2 :(得分:1)
https://laravel.com/docs/5.0/validation#error-messages-and-views
命名错误包
如果您在一个页面上有多个表单,您可能希望将MessageBag命名为错误。这将允许您检索特定表单的错误消息。只需将名称作为第二个参数传递给withErrors:
return redirect('register')->withErrors($validator, 'login');
然后,您可以从$ errors变量访问命名的MessageBag实例:
<?php echo $errors->login->first('email'); ?>