当我想在我的 laravel 项目中注册用户时,页面总是显示
Undefined variable: errors (View: /var/www/resources/views/auth/register.blade.php)"
根据 Laravel 文档,$errors
应始终自动设置:
So, it is important to note that an $errors variable will always be available in all of your views on every request, allowing you to conveniently assume the $errors variable is always defined and can be safely used.
当我使用时,我在每个 View 上都会打开这个:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
或者当我想使用$errors
变量时的任何其他方式。
这是为什么呢?我以前从未遇到过这个问题。
有人可以帮我吗?
最佳答案
您应该确保在web
的middlewareGroups
属性的app/Http/Kernel.php
中您有:
\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文件内尝试在以下 block 中创建路由
Route::group(['middleware' => ['web']], function () {
//routes here
});
更新新版本的 Laravel 应用程序
请注意,如果您两次使用 web
中间件,您也可能会遇到问题。 Laravel 应用程序 5.2.27 发生了变化(不要将其与您目前使用的 Laravel 框架混淆 - 您可能使用 Laravel 框架(例如 5.2.31),但在版本 5.2 中使用 Laravel 应用程序。 24) 其中 web
中间件自动应用于所有路由。因此,如果出现问题,您应该打开 app/Providers/RouteServiceProvider.php
文件并验证其内容。
您也可以在这里进行比较:
如果您有较新的版本(自动应用 web
中间件),则不应再在 routes.php
中使用 web
中间件或者您应该修改您的 RouteServiceProvider
方法以不应用 web
组中间件。否则,如果 web
中间件组自动应用到此提供程序中,并且您也在 routes.php
中使用它,您可能会得到非常意外的结果。
关于laravel - undefined variable : errors in Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454081/