laravel - undefined variable : errors in Laravel

标签 laravel laravel-validation laravel-middleware laravel-5

当我想在我的 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变量时的任何其他方式。

这是为什么呢?我以前从未遇到过这个问题。

有人可以帮我吗?

最佳答案

您应该确保在webmiddlewareGroups属性的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/

相关文章:

php - 如何在 Laravel 验证失败和通过验证时创建回调?

php - Laravel 5.3 - 内部重定向或修改请求中间件

laravel - 使用服务提供商的中间件获取覆盖的配置

laravel - 对于大型Web应用程序,最佳Vue-Router最佳实践是什么?

php - laravel Hash::make 不断给出不同的结果

php - Laravel 两个值必须不相等验证

laravel - 在 Laravel 字符串验证中避免使用 html 标签

ajax - 使用 React.js 和 Ajax 在 Laravel 5 中显示验证错误

laravel - "how fix laravel job has been attempted too many times or run too long'“

php - 在 Laravel 5 中使用中间件时找不到类 'App\Http\Middleware\DB'