Comparte en Facebook Twitter Google+

El validador de Laravel cuenta con una serie de reglas que cubren muchos de los posibles tipos de datos que puedan ser enviados a nuestra aplicación por medio de los formularios, pero siempre encontramos esos casos especiales dónde estas reglas no se adaptan a las necesidades específicas del proyecto, en este caso se crea la necesidad de crear algunos criterios de evaluación personalizados.

Veamos como podemos crear reglas personalizadas extendiendo la funcionalidad del validador de Laravel.

Creando un nuevo Form Request

Los Form Request son clases que se usan en Laravel para definir las reglas de validación y que gracias al contenedor de inyección de dependencias del framework, se ejecutan en el momento en el que es llamado el controlador que las implementa.

Para crear un form request usamos desde la consola:

Esto creará una clase CreateFormRequest dentro del directorio app\Http\Requests

Desde un controlador podríamos usar entonces lo siguiente:

Si alguna de las reglas definidas en el array “rules” de la clase CreateFormRequest falla, por defecto se retorna a la página anterior incluyendo en la sesión los mensajes de error del validador.

Creando una regla personalizada

Digamos que queremos verificar que un campo de texto no contenga ninguna etiqueta HTML, para ello podríamos crear una nueva regla “no_html“. Esto lo podemos hacer utilizando el método extendImplicit() de la clase Illuminate\Validation\Factory. Un buen lugar para hacerlo es el método boot() de la clase app\Providers\AppServiceProvider.

El resultado de la función anónima debe ser un booleano (true o false).

El método extendImplicit recibe como parámetros: el nombre de la nueva regla que estamos creando, una función anónima (que recibe el nombre del atributo, el valor de dicho campo y los parámetros adicionales definidos en la regla de validación) y finalmente un mensaje de error. Por ejemplo si usamos en el Form Request:

En este caso la variable $parameters del bloque anterior tendrá el siguiente array de datos:

De esta manera, puedes crear reglas personalizadas manteniendo una estructura muy limpia tanto en los controladores como en los FormRequests de tu aplicación.

Material relacionado

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.