Laravel验证错误视图

时间:2016-07-17 15:59:18

标签: php laravel blade

我在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 }) }; 来显示验证错误。

enter image description here

3 个答案:

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