2016-04-24 71 views
3

我試圖在返回到Laravel 5.2中的視圖時顯示驗證錯誤。在$錯誤變量是空的,在一個類似的問題Laravel 5.2 $errors not appearing in Blade已經提出:

(1)移動ShareErrorsFromSession中間件到$中間件財產

(2)包裝相關路線與網絡中間件。

當然,解決方案1(有效)不適用於我的情況,因爲我有一些API路由,因爲它在Laravel 5.2 validation errors中有詳細說明。

更具體地說,我使用多個身份驗證防護驅動程序,並且使用令牌身份驗證的路由是無狀態的。所以我們留下的是解決方案2.它應該工作,但它不起作用(或者我錯過了一些東西)。 沒有,如果我把我的路由組中(其中我要顯示驗證錯誤的)事情:

Route::group(['middleware' => ['web','auth:web']], function() {   
    ... 
} 

或只是裏面:

Route::group(['middleware' => 'web'], function() { 
    ... 
} 

的$錯誤變量似乎是空的。轉儲變量提供:

object(Illuminate\Support\ViewErrorBag)#209 (1) { 
    ["bags":protected]=> 
    array(0) { 
    } 
} 

Web組在kernel.php通常被定義爲:

protected $middlewareGroups = [ 
     'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      \Illuminate\Session\Middleware\StartSession::class,    
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
     ], 

     'api' => [ 
      'throttle:60,1', 
     ], 
    ]; 

我的控制器看起來像:

$form = Input::all(); 
$rules = Config::get('validation.contact');    
$validation = Validator::make($form,$rules); 

if ($validation->fails()){    
    return Redirect::back()->withErrors($validation); 
} else { 
    ... 
} 

任何想法?

更新(回答後):

你是對的亞歷山大!我錯過了最近的變化。但是那些不需要調用這些中間件的API路由呢?我們是否應該按照Web middleware being applied to API routes in Laravel 5.2中所述恢復此更改?如果是,那麼也許最好從Web組中剝離中間件並將它們放入新組(例如myweb)中。這樣我們就不會搞亂框架。

回答