2016-07-17 127 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