2016-04-08 39 views
2

我已經看到周圍所有類似的問題,並嘗試每一個答案。驗證程序檢查規則並重定向。但是$ errors變量在我的視圖中仍然是空的。

控制器:

public function postSlidesAdd(Request $request) 
    { 
     $validator = Validator::make($request->all(), [ 
      'priority' => 'required', 
      'text' => 'required', 
      'image' => 'required' 
     ]); 

     if ($validator->fails()) { 
      return redirect()->back()->withErrors($validator); 
     } 
     //insert to db and redirect back 
    } 

路線:

Route::group(['middleware' => ['web']], function() { 
    Route::post('/admin/slides/add', [ 
     'uses' => '[email protected]', 
     'as' => 'admin.slides.add' 
    ]); 
}); 

查看:

<div class=""> 
      @if(count($errors)>0)) 
       <ul> 
        @foreach($errors->all() as $error) 
         <li>{{$error}}</li> 

        @endforeach 
       </ul> 

      @endif 
     </div> 

我想我失去了一些東西小,重要的是,請大家幫忙。 我正在使用Laravel 5.2.29

更新: 如果這有什麼幫助;在我的控制器:

if ($validator->fails()) { 
     dd($validator->errors()); 
     return back()->withErrors($validator); 
    } 

這轉儲「的陣列消息」和內部是含有[輸入名稱=>錯誤消息]另一個陣列。我認爲這是要發送到視圖的數組,但它沒有通過。請幫助我做錯了什麼。

+0

我認爲它是'$ validator-> message()'? – aldrin27

+0

感謝您的快速響應,但message()方法在驗證器中不存在; – robertjoep

+0

ow。嘗試使它成爲'message()' – aldrin27

回答

0

您的視圖文件存在錯誤;你有一個額外的括號。嘗試改變這一點:

@if(count($errors)>0)) 

要這樣:

@if(count($errors) > 0) 

而且,在你的控制器,嘗試改變:

return redirect()->back()->withErrors($validator); 

要這樣:

return back()->withErrors($validator); 
+0

感謝您的快速回復。我更新了它,仍然沒有數據在$ errors中。 – robertjoep

+0

我編輯了我的答案與另一個潛在的問題 –

+0

嗨,先生,我更新了它。仍然是空的。如果這有任何幫助;在我的控制器中: if($ validator-> fails()){ dd($ validator-> errors()); return back() - > withErrors($ validator); } 它返回一個「消息」數組裏面的是[input names =>錯誤消息]的另一個數組。 – robertjoep

4

app\Http\Kernel.php舉動\Illuminate\Session\Middleware\StartSession::class從'web'$middlewareGroups$middleware