验证错误仅在 Laravel 中没有 Web 中间件时显示
Validation errors only show when out of web middleware in Laravel
我有一个全新的 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
中间件,但我不知道这可能有什么副作用。
一切都取决于您使用的 Laravel 应用程序的版本(不要将其与 Laravel 框架混淆)。
查看 app/Providers/RouteServiceProvider.php
文件以验证您是否像此默认文件中那样应用了 web
中间件 https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php
如果你这样做,你不应该在你的 routes.php
文件中使用它,因为你现在复制 web
中间件,它会导致这样的问题。
因此,您可以更改所有路由,也可以从 app/Providers/RouteServiceProvider.php
文件
中删除此 web
中间件
我有一个全新的 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
中间件,但我不知道这可能有什么副作用。
一切都取决于您使用的 Laravel 应用程序的版本(不要将其与 Laravel 框架混淆)。
查看 app/Providers/RouteServiceProvider.php
文件以验证您是否像此默认文件中那样应用了 web
中间件 https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php
如果你这样做,你不应该在你的 routes.php
文件中使用它,因为你现在复制 web
中间件,它会导致这样的问题。
因此,您可以更改所有路由,也可以从 app/Providers/RouteServiceProvider.php
文件
web
中间件