Nuevo en Symfony 3.4: Mejorados los validadores de comparación
La idea original de los validadores de comparación era comparar variables respecto a algún valor predefinido (ejemplo: "el precio debe ser mayor que 0", "la edad debe ser igual o mayor que 18", etc.)
No obstante, en las aplicaciones Symfony es común tener que comparar el valor de dos variables entre sí (ejemplo: "la fecha de finalización es posterior a la de inicio", "la contraseña en claro no es igual que el login", etc.)
En esos casos puedes utilizar el validador Expression para definir una expresión que compare ambos valores, por ejemplo dos propiedades de un objeto:
use Symfony\Component\Validator\Constraints as Assert; class Event { /** @Assert\DateTime() */ private $startDate; /** * @Assert\DateTime() * @Assert\Expression("value > this.startDate") */ private $endDate; // ... }
En Symfony 3.4, hemos mejorado los validadores de comparación para que acepten
una nueva opción llamada propertyPath
y que define la propiedad con cuyo valor
quieres hacer la comparación:
use Symfony\Component\Validator\Constraints as Assert; class Event { /** @Assert\DateTime() */ private $startDate; /** * @Assert\DateTime() * @Assert\GreaterThan(propertyPath="startDate") */ private $endDate; // ... }
El valor de propertyPath
puede ser cualquier expresión válida para el
componente PropertyAccess, así que puedes hacer referencia a propiedades de
objetos embebidos, arrays, etc.
Esta funcionalidad fue contribuida por Maxime Steinhausser en el pull request #22576.
Fuente: New in Symfony 3.4: Improved comparison constraints
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.