Los constraints pueden aplicarse a una propiedad (por ejemplo name), a un método getter public (por ejemplo getFullName) o a una clase (Author). El primero es el más común y fácil de usar, pero el segundo te permite especificar reglas de validación más complejas.
Propiedades
Validar las propiedades es la técnica de validación más simple. Symfony permite validar propiedades public, protected y private. Una validación sencilla puede ser la siguiente:
// src/AppBundle/Entity/Author.php
// ...
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank()
* @Assert\Length(min=3)
*/
private $firstName;
}
Getters
Los constraints también pueden aplicarse al valor de retorno de un método. Symfony permite añadir un constraint a cualquier método public cuyo nombre empiece por get, is o has (a veces se hace referencia a estos tres como "getters", aunque individualmente serían getters, issers o hassers).
Esta forma permite validar un objeto dinámicamente. Por ejemplo, queremos asegurarnos de que en un campo password no es igual al nombre del usuario (por razones de seguridad). Puedes hacer esto creando el método isPasswordLegal con el constraint isTrue:
// src/AppBundle/Entity/Author.php
// ...
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\IsTrue(message = "El password no puede ser tu nombre")
*/
public function isPasswordLegal()
{
return $this->firstName !== $this->password;
}
}
Classes
Algunos constraints se aplican a clases enteras, como Callback, que es un constraint genérico que se aplica a la propia clase. Cuando se valida la clase, los métodos especificados por el constraint simplemente se ejecutan de forma que cada uno pueda proporcionar también su propia validación.