¿Qué es la sesión?
HTTP es un protocolo sin estado. Es decir, HTTP en sí mismo no tiene un mecanismo para mantener información de un usuario entre solicitudes. La funcionalidad de sesión de Laravel ofrece un modo de conservar datos del usuario a lo largo de varias solicitudes. Guarda en la sesión información que quieras mantener entre solicitudes: estado de inicio de sesión, productos del carrito, datos de un formulario en curso, etc.Configuración del driver de sesión
La configuración se encuentra enconfig/session.php.
Puedes cambiar el driver con la variable de entorno SESSION_DRIVER (en .env).
En un proyecto por defecto de Laravel, el driver configurado es
database. Para usar este driver hace falta la tabla sessions, pero ya está incluida en la migración por defecto, así que funciona sin ajustes.Formas de acceder a la sesión
Hay dos formas de acceder: usando métodos de la instanciaRequest o usando el helper global session().
Usando la instancia Request
RecibeRequest como type-hint en el método del controlador y accede con $request->session().
Usando el helper global session()
El helper session() puede invocarse desde cualquier sitio: controladores, vistas, etc.
Operaciones sobre la sesión
Obtener datos
Comprobar la existencia
has y exists:
Guardar datos
Eliminar datos
Datos flash
Los datos flash son datos de sesión válidos solo en la siguiente solicitud. Se usan para información que solo hay que mostrar una vez, como mensajes de éxito o error tras enviar un formulario.Guardar con flash()
Extender datos flash
Mostrar mensajes flash en Blade
Caso práctico: mostrar mensaje tras enviar un formulario
Guardar un mensaje de éxito en la sesión, hacer un redirect y mostrarlo en la siguiente página es un patrón clásico.1
Definir las rutas
2
Implementar el controlador
En el
store que recibe el formulario, tras guardar redirige con un mensaje de éxito.redirect()->with('success', '...') es un atajo para pasar datos flash al destino de la redirección.3
Mostrar el mensaje en el layout
Añade la visualización del mensaje flash en
resources/views/layouts/app.blade.php.4
Crear la vista del listado
Patrón combinado con errores de validación
En caso de fallo de validación se combina conback()->withErrors().
Laravel guarda automáticamente los errores como datos flash, así que en Blade puedes usar la variable $errors.
Próximos pasos
Validación
Aprende a validar los datos introducidos en un formulario.