¿Qué es la validación?
Validar consiste en comprobar que los datos enviados por el usuario cumplen el formato y las condiciones esperadas. Laravel ofrece validación sencilla y potente mediante el métodovalidate del objeto Request o mediante clases form request dedicadas.
Validación en el controlador
Uso de $request->validate()
Llamar a $request->validate() en el método del controlador es la forma más sencilla.
Ante un fallo, Laravel redirige automáticamente a la pantalla anterior y guarda los errores en la sesión.
Define las rutas:
validate recibe un array cuya clave es el campo y cuyo valor son las reglas.
Las reglas se separan con | o se pasan como array.
Reglas de validación principales
Consulta la lista completa en la documentación oficial.
Uso de los datos validados
El retorno devalidate es un array solo con los datos que pasaron la validación.
Puedes usarlos como datos de confianza.
Mostrar errores en Blade
Ante un fallo, Laravel hace la variable$errors disponible en todas las vistas.
Lo gestiona el middleware ShareErrorsFromSession del grupo web.
Listar todos los errores
Mostrar el error de un campo
Con la directiva@error muestras el error de un campo en línea.
Form requests
¿Qué es una form request?
Cuando la lógica de validación se vuelve compleja, extraerla a una clase “form request” es una buena opción. Una form request es una clase de solicitud personalizada que agrupa validación y autorización.Crear una form request
Genera la clase con el comando Artisanmake:request.
app/Http/Requests/StorePostRequest.php.
El método rules()
Devuelve las reglas de validación como array. El formato es el mismo que en validate.
El método authorize()
Determina si la solicitud está autorizada.
Si devuelve true, la autorización pasa; si devuelve false, se responde automáticamente con 403.
Para permitir solo a usuarios autenticados, puedes comprobar con auth()->check().
En tutoriales basta con devolver true.
Inyección en el controlador
Basta con tipar la form request en el método del controlador para usarla. La validación se ejecuta antes de entrar al método, así que no necesitas escribir código de validación dentro.$request->validated() obtienes solo los datos validados.
Ejemplo práctico: crear y guardar un formulario de post
Flujo completo de visualización, envío, validación y guardado.1
Definir las rutas
2
Crear la form request
3
Implementar el controlador
4
Crear la plantilla Blade
Incluye siempre
@csrf en los formularios Blade. Sin el token CSRF, Laravel devuelve un error 419.Próximos pasos
Solicitudes HTTP
Repasa cómo obtener datos del objeto Request.