验证错误仅显示在Laravel中的Web中间件之外

时间:2016-07-21 15:40:23

标签: php laravel-5 laravel-5.2 laravel-routing laravel-middleware

我有一个新的Laravel安装版本5.2.41,我想将验证错误输出到我的模板。非常基本的东西。

在我的app.blade.php

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

我的routes.php文件:

Route::group(['as' => 'backend', 'middleware' => ['web', 'auth'], 'namespace' => 'Backend', 'prefix' => config('settings.admin.slug')], function () {    
    Route::get('/admin_users/edit/{id}', ['uses' => 'AdminUserController@edit', 'as' => 'admin.users.edit']);
    Route::post('/admin_users/edit/{id}', 'AdminUserController@update');
});

正如您所看到的,我在这里使用web中间件。

在此配置中,$errors变量 设置应该是,但它只是一个空数组。

如果我删除了web中间件,那么一切都会正常运行。这对我来说似乎很奇怪,而不是预期的行为。显而易见的解决方法是不包含web中间件,但我不知道可能产生的副作用。

1 个答案:

答案 0 :(得分:1)

一切都取决于您使用的Laravel应用程序的版本(不要将其与Laravel框架混淆)。

查看app/Providers/RouteServiceProvider.php文件以验证是否已应用web中间件,如此默认文件https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php

如果这样做,则不应在routes.php文件中使用此项,因为您现在复制了web个中间件,这会导致此类问题。

因此,您可以更改所有路由,也可以从web文件中删除此app/Providers/RouteServiceProvider.php中间件