Symfony2 - Custom Validation Constraint et message d'erreur
Article publié en 2011 et conservé en l'état : son contenu est probablement dépassé.
Voilà un exemple de contrainte qui permet d’ajouter une erreur sur un champ spécifique, ce qui peut être utile lorsque l’on ajoute des Validator au niveau d’une classe
<?php
class ObjectValidator extends ConstraintValidator
{
public function isValid($value, Constraint $constraint)
{
if ($value->getType() == 1) {
// si l'objet a un type 1, le champ foo ne doit pas être vide
if ($value->getFoo() == '') {
// on récupère la propriété courante
$oldPath = $this->context->getPropertyPath();
// on ce place a l'endroit où l'on veut ajouter l'erreur
$this->context->setPropertyPath(empty($oldPath)? 'data': $oldPath.'.data');
$this->context->addViolation($constraint->message, array(), null);
// on revient sur la propriété courante
$this->context->setPropertyPath($oldPath);
}
}
return true;
}
}