DEV Community

Cover image for Mejora tus validaciones en Laravel con Form Request
Iosvany Alvarez
Iosvany Alvarez

Posted on

Mejora tus validaciones en Laravel con Form Request

Laravel ofrece un buen recurso para poder organizarlas de una manera más limpia y funcional. 

Seguro has visto como desarrollador que solemos codear nuestras validaciones en el controlador. Pero nuestro código crece exponencialmente y sería difícil mantenerlo, de acuerdo a los principios SOLID no debería ser así, los Form Request llegan al rescate. Extraen toda esa lógica en una clase aparte y te brinda diferentes métodos que termina en un código más mantenible y prolijo. 

Quédate, te mostraré un truco para validar todos los verbos HTTP en un solo archivo.

Empecemos creando en nuestra terminal nuestro primer Form Request 

Image description

Una vez creado nos desplazamos a la carpeta en app/http/request en nuestro proyecto y lo abrimos.

Veamos el primer método

Image description

Devuelve un valor booleano que por default viene en false y define la autorización si la petición del usuario debe llevar a cabo las validaciones establecidas en el Request. También puedes crear una lógica más avanzada para la autorización de ciertos procesos como la actualización, eliminación o adición de recursos. 

Método rules

Image description

Establecerá las reglas para nuestras propiedades que vienen en la petición HTTP. Aquí es cuando le muestro un truco, cuando generamos un Form Request deberíamos generarlo por cada acción o método http, o sea FormRequestPostSale, FormRequestPutSale, etc.

Sin embargo, con tan solamente encapsularlos dentro de los métodos match y method evaluaremos qué tipo de petición hace el usuario y cuáles son las reglas a evaluar. 

Nota:
Esta función de match está presente si nada más tienes PHP 8.0 instalado en tu máquina.

Image description

Método attributes

En este particular y de manera resumida pondrás los nombre con lo que se mostrarán los mensajes de las validaciones. Algo muy identificativo para mayor compresión, entenderás más adelantes como lo utilizaremos.

Image description

Método message
Pieza importante de los Form Request, porque define los mensajes que irían a mostrar. Cómo vemos en la imagen establecemos las reglas con los diferentes mensajes de validación  y como anticipé utilizamos nuestro :attribute para no repetir código. 

Opcional

Método prepareForValidation este método lo empleo para modificar algún parámetro del Request entrante, lo uso para hashear un password y así pasaría al controlador ya convertido y menos código en él. Pero puede hacer infinidades de modificaciones.

Los Form Request te pueden ayudar a establecer una validación fuerte y eliminar esas líneas de código del controlador. Mantener esa capa que verifica si la petición cumple con todo los parámetros ayudan que la data pase al controlador con los estándares correspondientes. Si algunas de las validaciones faltan, devolverá los errores con código 422 Unprocessed Entry.

Queda mucho por explicar este es un pequeño resumen de este gran ayuda de Laravel, si deseas profundizar más te dejo la referencia a la documentación. 

Referencias

Si te gusto el post no olvide dar like.

Top comments (2)

Collapse
 
danielllanes profile image
Daniel Llanes

It is possible to send a flash session if the validation fails

Collapse
 
lucasgio profile image
Iosvany Alvarez

Hola gracias por preguntar.
Si, si las tienes del servidor establecidas