Validación datos dependientes en entidad Symfony2

Al aprender php o cualquier otro lenguaje de programación, llegamos a la situación de tener que validar datos, cuando unos campos están completados o no. Es una tarea bastante habitual cuando desarrollamos proyectos web.

Symfony2 nos permiten de un modo bastante sencillo realizar estas validaciones (validation) dependientes entre campos de la misma entidad (entity)

En este post voy a poner un ejemplo para una validación que se realiza desde un único archivo, teniendo otro más de apoyo para los mensajes cuando no se cumplan los criterios que definamos.

Vamos a suponer una entidad Producto, donde tenemos un campo buleano talla, y otro campo valorTalla, donde valorTalla es obligatorio si se indica que talla es «si».

Validación datos

Aquí tenemos la entidad Producto.php

En la línea 7 es donde incluimos el validador:

use AppBundle\Validator\Constraints as EagAssert;

EagAssert es el nombre que yo le he dado, puedes utilizar el que mejor te parezca.

En la línea 14, definimos que clase es la que vamos a utilizar:

* @EagAssert\Producto

En la carpeta Validator\Contraints vamos a tener 2 archivos, estos deben comenzar con el nombre que hemos dado en la línea anterior, la 14, uno para los mensajes de validación, donde creamos una clase Constraint que extiende a Constraint, Producto.php:

Y otro archivo para realizar la validación propiamente dicha, ProductoValidator.php

Con esto ya tenemos un ejemplo básico, que nos sirve de base para poder realizar muchas más validaciones en una misma entidad, haciendo uso de estos 2 mismos archivos.

Referencias

Enlace a documentación oficial de Symfony