Laravel 4.2 - 将验证错误返回到特定表单

时间:2015-10-14 13:27:44

标签: php forms validation laravel

我的登录和注册表单总是包含在每个页面的主布局中。

它们中的每一个都被提交到它们各自的路径(/ login和/ register),并且对它们有不同的验证。如果验证失败,控制器会将它们发回到他们所在的任何页面,并使用以下内容:

让我们说寄存器

的验证失败了 我尝试为错误添加别名

return Redirect::back()-withErrors($validation,'register')

我还试过发回另一个变量

return Redirect::back()->withErrors($validation)->with('errorsFor','register')

位于我的页面顶部的脚本标记

 @if(!(empty($errors)))
          //..pseudo code here
       @if(<TheVariable that specifies which form the errors are for> == 'register')
           //set error messages under the register form
           $("#registerForm").modal(); // <-- my forms are opened using bootstrap modal
       @elseif(<TheVariable that specifies which form the errors are for> == 'login')
          //set error messages under the login form
           $("#loginForm").modal(); // <-- my forms are opened using bootstrap modal
       @endif
 @endif

如何发送回标识符以指定我想为其设置错误的表单,以及发回错误?感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

代码

return Redirect::back()->withErrors($validation,'register');

似乎没问题,因为您为register表单指定了一个名为的错误包,这也可以在另一种形式login上完成,如下所示:

return Redirect::back()->withErrors($validation,'login');

现在要确定表单是否有验证错误,您可以检查这样的条件:

   @if($validation->register)
       //set error messages under the register form 
       $("#registerForm").modal(); // <-- my forms are opened using bootstrap modal
   @elseif($validation->login)
      //set error messages under the login form
       $("#loginForm").modal(); // <-- my forms are opened using bootstrap modal
   @endif

要访问特定错误包中的特定字段错误,您可以执行以下操作:

 $validation->register->first('field_name');

<强> Laravel's Documentation

注意:您不需要按照代码的第二部分的方式进行操作:

return Redirect::back()->withErrors($validation)->with('errorsFor','register')

因为with('errorsFor', 'register')表示您传递的变量$errorsFor的值为'register'