Undefined variable: errors in Laravel

寵の児 提交于 2019-11-27 04:09:20
Marcin Nabiałek

You should make sure that in app/Http/Kernel.php in middlewareGroups property for web you have:

\Illuminate\View\Middleware\ShareErrorsFromSession::class,

in this array. Compare this with https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php

EDIT

It seems you need to add 'middleware' => 'web' for route you are using or put \Illuminate\View\Middleware\ShareErrorsFromSession::class, into $middleware property array

or

Inside of the routes.php file try to create your routes within the following block

Route::group(['middleware' => ['web']], function () {
    //routes here
});

UPDATE FOR NEWER VERSIONS OF LARAVEL APPLICATION

Be aware that you might run into problems also in case you use web middleware twice. There was a change in Laravel application 5.2.27 (don't confuse it with Laravel framework you use at the moment - you might use Laravel framework for example 5.2.31 but have Laravel application in version 5.2.24) in which web middleware is applied automatically for all routes. So in case of problems, you should open your app/Providers/RouteServiceProvider.php file and verify its content.

You can compare it also here :

In case you have newer version (that applies web middleware automatically), you shouldn't use web middleware in routes.php anymore or you should modify your RouteServiceProvider method to not apply web group middleware. Otherwise if web middleware group is automatically applied in this provider and you use it also in routes.php you might get very unexpected results.

Felipe Peña

I had this very same issue with Laravel 5.2.x.

Inside of the routes.php file try yo create your routes within the

Route::group(['middleware' => ['web']], function () {
    //routes here
}

statement.

I had similar problem and solved this one by adding routes into middleware property array as well,

BUT

it worked only after calling php artisan route:cache (clearing route cache) subsequently.

I hope some of you would find this useful.

I was seeing this error too and later realised I had used the WithoutMiddleware trait as a means to bypass authentication for this particular test, but it ended up removing the validation error binding too. So I had to stop using the trait to keep the views working.

tisuchi

Go to App\Http\Kernel.php file. Move all the things of $middlewareGroups properties to $middleware.

Check for more details- http://www.tisuchi.com/laravel-5-2-undefined-variable-error-validation/

Also to be aware of: If you write tests and your view has $errors variable make sure you don't use WithoutMiddleware trait.

Vojko

count is not really realiable since it assumes the variable already exists. change the condition check to: @if($errors->has()) or just @if($errors)

Also if you are redirecting make sure to use this in your controller

return redirect()->back()->with('errors', $validator->messages());

EDIT: seen now that you are using L5.2 This may answer your question - you need to put your Routes in Route group.

Laravel 5.2 validation errors

Amit Rai
protected $middleware = [              \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Social\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \Social\Http\Middleware\VerifyCsrfToken::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [

    ],

    'api' => [
        'throttle:60,1',
    ],
];

/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.

make your kernel look like this

Your problem will be fixed by using this method.

Route::group(['middleware' => ['web']], function () {
        //routes should go here
});

If this doesn't help you, just run the following artisan command in addition to the above code:

php artisan key:generate

I solved in this way while using 5.2.*

It was not actually error, it was warning you can remove using php error_reporting() function

I removed warning in my laravel 5.6 by using

error_reporting(E_ALL ^ E_NOTICE);

More Detail : http://php.net/manual/en/function.error-reporting.php

Hope it will help you, thank you

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!