2016-04-21 49 views
2

我對Laravel有問題,因爲標題說。 我的代碼:

功能的控制器:

$validator = Validator::make($request->all(), [ 
     'login' => 'required|max:10', 
     'katalog' => 'required', 
     'limitip' => 'required|ip', 
    ]); 

    if($validator->fails()){ 
     return redirect('something/toedit/someone')->withErrors($validator)->withInput(); 
    } 
    else{ 
     echo "Clear."; 
    } 

和路由:

Route::get('something/toedit/{login}',['middleware' => 'auth', 'uses'=>'[email protected]']); 

Route::post('something/toedit',['middleware' => 'auth', 'uses'=>'[email protected]']); 

而現在的問題是,這種代碼在我看來不可能有返回結果。

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

而且{{COUNT($錯誤)}}這是等於0 但是,如果使用這樣的代碼:

@if (Session::has('errors')) 
    {{var_dump(Session::get('errors'))}} 
@endif 

它返回我的觀點,即:

對象(Illuminate \ Support \ ViewErrorBag)#146(1){[「bags」:protected] => array(1){[「default」] => object(Illuminate \ Support \ MessageBag)#147(2){[ 「message」:protected] => array(1){[「login」] => array(1){[0] => string(48)「登錄可能不會超過10個字符RS「。 }} [「format」:protected] => string(8)「:message」}}}

有人可以幫助我訪問刀片視圖中$ errors變量的錯誤嗎?我真的很困惑。

+0

嘗試session() - > get('errors') – Abhishek

+0

它如何提供幫助? – Lukasin

+0

你爲什麼不嘗試一次? – Abhishek

回答

0

$errors變量可以由中間件基團,其包括ShareErrorsFromSession加入。您可以在幾個不同的方式將此到您的路線:

// Apply to a single route 
Route::get('/', ['middleware' => ['auth', 'web'], function() { 
    // 
}]); 

// To a group of routes 
Route::group(['middleware' => ['auth', 'web']], function() { 
    Route::get(...); 
    Route::post(...); 
}); 

https://laravel.com/docs/5.2/middleware#assigning-middleware-to-routes

+0

'web'中間件自動適用於所有路線自5.2.27 –

+0

我認爲這裏沒有問題。如你所說,我修改了我的路線,現在我沒有任何錯誤會話。工匠告訴我,我現在已經是「網絡」中間件。 – Lukasin

1

我有類似的問題上Laravel 5.2.41。在我的情況下,$ errors-> has()總是返回1,即使沒有錯誤。

找到了解決辦法,從Laracasts: -

$errors->has() returns true since framework upgrade

更換$errors->has()$errors->any()$errors->count() > 0會做。