当我想在我的laravel项目中注册用户时,页面总是说
未定义的变量:错误(查看:/var/www/resources/views/auth/register.blade.php)"
根据Laravel文档,$errors
应始终自动设置:
因此,重要的是要注意每个请求的所有视图中都会提供$ errors变量,这样您就可以方便地假设$ errors变量始终定义并且可以安全使用.
我使用时在每个视图上都有这个:
@if (count($errors) > 0)@endif@foreach ($errors->all() as $error)
- {{ $error }}
@endforeach
或者当我想使用$errors
变量时的任何其他方式.
为什么是这样?我之前从未遇到过这个问题.
有谁可以帮助我吗?
你应该确保你app/Http/Kernel.php
在middlewareGroups
房产中web
有:
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
在这个数组中.将其与https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php进行比较
编辑
看来你需要添加'middleware' => 'web'
你所使用的路线或将\Illuminate\View\Middleware\ShareErrorsFromSession::class,
进入$middleware
属性数组
在routes.php文件中尝试在以下块中创建路由
Route::group(['middleware' => ['web']], function () { //routes here });
更新版LARAVEL应用程序的更新
请注意,如果您使用web
中间件两次,也可能会遇到问题.有在Laravel应用的改变5.2.27(不使用的那一刻Laravel框架混淆-您可以使用Laravel框架例如5.2.31,但是在5.2.24版本Laravel应用),其中web
应用中间件自动为所有路线.因此,如果出现问题,您应该打开app/Providers/RouteServiceProvider.php
文件并验证其内容.
你也可以在这里比较它:
适用于Laravel应用程序5.2.24的RouteServiceProvider
适用于Laravel应用程序5.2.27的RouteServiceProvider
如果您有更新的版本(web
自动应用中间件),您不应再使用web
中间件,routes.php
或者您应该修改您的RouteServiceProvider
方法以不应用web
组中间件.否则,如果web
中间件组自动应用于此提供程序,并且您也使用它,则routes.php
可能会得到非常意外的结果.
我在Laravel 5.2.x中遇到了同样的问题.
在routes.php
文件内部尝试你在里面创建你的路线
Route::group(['middleware' => ['web']], function () { //routes here }
声明.