我試圖在返回到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)中。這樣我們就不會搞亂框架。