¿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.
Validar las claves de un array
La reglaarray_keys verifica que el valor objetivo es un array de PHP y que todas sus claves están contenidas en la lista indicada. Debes especificar al menos una clave.
Rule::arrayKeys.
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.
Especificar la complejidad y la longitud de una contraseña
El objeto de reglaPassword te permite especificar la complejidad y el número mínimo/máximo de caracteres de una contraseña en el mismo sitio.
min() fija el número mínimo de caracteres y max() el máximo. Definir max() te permite admitir contraseñas complejas y, a la vez, declarar un límite superior asumido por el almacenamiento y las integraciones con servicios de terceros.
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.