2016-07-17 98 views
1

我在Laravel的单个页面上有两种不同的表单。 这是既有注册又有登录表单的注册页面。当我在注册表单上发现错误时,登录表单中会出现相同的错误(请参见图片)。解决这个问题的最好方法是什么?Laravel验证错误视图

直接在我的表格下,我使用@include('errors.common')来显示验证错误。

enter image description here

+0

图片是巨大的,所有的,但不必片段:

return redirect('register')->withErrors($validator, 'login'); 

然后你可以从$错误变量访问命名MessageBag实例的代码,很难说出了什么问题。似乎你需要找到一种方法来将这两种形式之间的验证规则分开。每次从这个视图提交表单时,他们都使用相同的验证规则。 –

+0

这是errors.common视图。 http://pastebin.com/R8XZjpVW 它包含在登录和注册表格中。 我使用Laravel附带的默认身份验证方法。 – Kaizokupuffball

+0

再一次,它与您的刀片模板无关,无法处理错误。你的两种形式使用什么行动?应该带着开始窗体标签'

' –

回答

3

当验证控制器失败,则必须在重定向表明,如果它是失败的登录或注册:

return redirect()->back()->withInput()->with('loginFail', true); 

现在,在你看来,你有你的用户名和注册表格,相应地加载@include('errors.common')

@if(Session::has('loginFail') 
    @include('errors.common') 
@endif 

使用与注册表单相同的原则。

+0

我明白了。但是我没有使用我自己的控制器进行登录或注册,所以我会在哪里放置' - > with ...'? – Kaizokupuffball

1

如果您使用Laravel附带AuthController.php的另一种解决方案。

登记表添加隐藏字段与register名称与1的值。

登录表单添加一个隐藏字段的login1值的名称。

现在你可以控制何时显示这样的错误:

// 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 
+0

我已经更新了这个答案。这应该符合你的要求。 – user2094178