Skip to main content

¿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étodo validate 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:
Crea el controlador:
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 de validate 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.
Con old('nombre_del_campo') puedes volver a rellenar el valor introducido por el usuario tras un fallo de validación.

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 Artisan make:request.
Se crea 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.
Si authorize devuelve false, el método del controlador no se ejecuta y se responde 403 Forbidden.

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.
Con $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.
Última modificación el 13 de julio de 2026