Validación de formularios en Laravel

En este post voy a mostrarte cómo hacer el envío de un formulario con Laravel, así como la validación del mismo del lado del servidor.

Laravel provee una forma fácil de validar, además de mostrar los errores en una lista que puede estar bajo el formulario.

Nota: si quieres usar la validación con mensajes en español, por favor, mira este post, también te invito a ver más tutoriales de Laravel.

Formulario

El formulario queda como se ve a continuación:

Presta atención al action, que va a una ruta con nombre llamada “guardarArea“. Otra cosa que debes notar es el atributo name del input, pues ese nombre lo vamos a usar en la validación.

También fíjate en que incluye algo llamado “errores” cuyo código veremos abajo.

Ruta

En mi archivo de rutas, simplemente llamo a un método del controlador:

Se invocará al método agregar de AreasController.

El FormRequest

Para validar y dejar limpio el controlador, hay que crear un Request, pues nos permite tener mayor control y separar la validación:

Los requests se ubican en app/Http/Requests y deben extender de FormRequest.

Lo que importa son dos métodos: authorize y rules.

  • El de authorize indica si el usuario está autorizado para hacer esa petición (aquí podríamos verificar permisos o roles)
  • El de rules indica la validación

Para la validación simplemente regresamos un arreglo con las reglas, cuya lista completa puedes ver aquí.

El controlador

Dentro del controlador, vamos a recibir ese FormRequest que acabamos de crear.

La magia aquí ocurre en que el método del controlador será llamado únicamente si la validación pasa, es decir, en el controlador asumimos que ya está validado, pues si la validación falla, el método no será llamado

De esa forma separamos la lógica.

Mostrar los errores

Ahora vamos a ver la plantilla de errores. Laravel pone los errores de la validación en una variable llamada $errors.

Podemos iterarlos con un foreach (para obtenerlos a todos se usa $errors->all()) e imprimirlos.

El contenido del archivo que muestra errores queda así:

Y lo estamos incluyendo en el formulario.

Demostración

Ahora veamos la demostración. Como lo dije anteriormente, el método del controlador ni siquiera será llamado si la validación falla.

Al enviar el formulario con datos erróneos:

Validación de formulario con Laravel

Y si los datos son correctos, se muestra un mensaje de retroalimentación exitoso.

Más validaciones

Si crees que esa validación es muy simple, te muestro otra:

En este caso incluso estoy validando que el id de área exista en otra tabla.

Validación de formularios en Laravel

Por parzibyte Tiempo de lectura: 2 min
0