Variable indefinida: errores en Laravel

Cuando quiero registrar un usuario en mi proyecto laravel, la página siempre dice

Variable indefinida: errores (Ver: /var/www/resources/views/auth/register.blade.php) ”

De acuerdo con la documentación de Laravel, los $errors siempre se deben establecer automáticamente:

Por lo tanto, es importante tener en cuenta que una variable $ errors siempre estará disponible en todas sus vistas en cada solicitud, lo que le permite asumir convenientemente que la variable $ errors siempre se define y se puede usar de forma segura.

Tengo esto en cada vista cuando uso:

 @if (count($errors) > 0) 
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif

o de otra forma cuando quiero usar la variable $errors .

¿Por qué es esto? Nunca he tenido este problema antes.

¿Puede alguien ayudarme por favor?

Debe asegurarse de que en la app/Http/Kernel.php en la propiedad middlewareGroups para la web tenga:

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

en este conjunto. Compare esto con https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php

EDITAR

Parece que necesitas agregar 'middleware' => 'web' para la ruta que estás usando o poner \Illuminate\View\Middleware\ShareErrorsFromSession::class, en $middleware property array

o

Dentro del archivo routes.php intenta crear tus rutas dentro del siguiente bloque

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

ACTUALIZACIÓN PARA NUEVAS VERSIONES DE LA APLICACIÓN LARAVEL

Tenga en cuenta que también podría tener problemas en caso de que utilice middleware web dos veces. Hubo un cambio en la aplicación 5.2.27 de Laravel (no la confunda con el marco de trabajo de Laravel que utiliza actualmente; puede usar el marco de trabajo de Laravel, por ejemplo, 5.2.31, pero tiene la aplicación Laravel en la versión 5.2.24) en el que está el middleware web aplicado automáticamente para todas las rutas. Entonces, en caso de problemas, debe abrir su app/Providers/RouteServiceProvider.php y verificar su contenido.

Puedes compararlo también aquí:

  • RouteServiceProvider para la aplicación Laravel 5.2.24

  • RouteServiceProvider para la aplicación Laravel 5.2.27

En caso de que tenga una versión más nueva (que aplique web middleware web automáticamente), ya no debe usar middleware web en routes.php o debe modificar su método RouteServiceProvider para no aplicar web middleware del grupo web . De lo contrario, si web grupo de middleware web se aplica automáticamente en este proveedor y lo utiliza también en routes.php es posible que obtenga resultados muy inesperados.

Tuve el mismo problema con Laravel 5.2.x.

Dentro del archivo routes.php intente crear sus rutas dentro del

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

statement.

Tuve un problema similar y resolví este agregando rutas en la matriz de propiedades middleware también,

PERO

funcionó solo después de llamar a php artisan route:cache (borrar el caché de ruta) posteriormente.

Espero que algunos de ustedes encuentren esto útil.

También estaba viendo este error y luego me di cuenta de que había utilizado el rasgo WithoutMiddleware como un medio para eludir la autenticación para esta prueba en particular, pero también WithoutMiddleware el WithoutMiddleware validación de error. Así que tuve que dejar de usar el rasgo para mantener las vistas funcionando.

Vaya al archivo App \ Http \ Kernel.php . Mueva todas las cosas de $middlewareGroups properties a $middleware .

Busque más detalles: http://www.tisuchi.com/laravel-5-2-undefined-variable-error-validation/

Además, tenga en cuenta: si escribe pruebas y su vista tiene $ variable de errores, asegúrese de no utilizar el rasgo de WithoutMiddleware .

recuento no es realmente confiable ya que asume que la variable ya existe. cambie la verificación de condición a: @if($errors->has()) o simplemente @if($errors)

Además, si está redireccionando, asegúrese de usar esto en su controlador

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

EDITAR: visto ahora que está utilizando L5.2 Esto puede responder a su pregunta: debe colocar sus Rutas en el grupo Ruta.

Errores de validación de Laravel 5.2

 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. 

haz que tu kernel se vea así

En realidad no era un error, se advertía que se puede eliminar utilizando la función php error_reporting ()

Eliminé la advertencia en mi laravel 5.6 al usar

error_reporting (E_ALL ^ ​​E_NOTICE);

Más detalles: http://php.net/manual/en/function.error-reporting.php

Espero que te ayude, gracias