Symfony 2.5 addViolationAt устарел, используйте buildViolation ()

Я слежу за кулинарной книгой о том, как создать валидатор ограничения классов, и сейчас я нахожусь в точке, где я собираюсь добавить нарушение в функцию validate() .

Однако моя IDE уведомляет меня о том, что функции addViolation() и addViolationAt() устарели.

Может ли кто-то указать мне в правильном направлении, как использовать функцию Context\ExecutionContextInterface::buildViolation() ?

$this->context – это экземпляр Symfony\Component\Validator\ExecutionContext

 class ProtocolClassValidator extends ConstraintValidator { public function validate($protocol, Constraint $constraint) { if ($protocol->getFoo() != $protocol->getBar()) { $this->context->addViolationAt( 'foo', $constraint->message, array(), null ); } } } 

При изменении вызова $this->context->addViolationAt() на просто $this->context->buildViolation() я получаю следующее исключение:

UndefinedMethodException: Попытка вызвать метод «buildViolation» в классе «Symfony \ Component \ Validator \ ExecutionContext» в разделительной строке 23. Вы имели в виду позвонить: «addViolation»?

и строка 23 имеет следующий код:

  $builder = $this->context->buildViolation($constraint->message) ->atPath('formField') ->addViolation(); поле  $builder = $this->context->buildViolation($constraint->message) ->atPath('formField') ->addViolation(); 

addViolation и addViolationAt устарели от 2.5, но не будут удалены до 3.0, поэтому они все еще пригодны для использования в течение хорошего времени.

Однако … взято из UPGRADE FROM 2.x to 3.0 log …

 The method `addViolationAt()` was removed. You should use `buildViolation()` instead. Before: $context->addViolationAt('property', 'The value {{ value }} is invalid.', array( '{{ value }}' => $invalidValue, )); After: $context->buildViolation('The value {{ value }} is invalid.') ->atPath('property') ->setParameter('{{ value }}', $invalidValue) ->addViolation(); )); 

С немного более взятым из Context / ExecutionContextInterface …

 /** * Returns a builder for adding a violation with extended information. * * Call {@link ConstraintViolationBuilderInterface::addViolation()} to * add the violation when you're done with the configuration: * * $context->buildViolation('Please enter a number between %min% and %max.') * ->setParameter('%min%', 3) * ->setParameter('%max%', 10) * ->setTranslationDomain('number_validation') * ->addViolation(); * * @param string $message The error message * @param array $parameters The parameters substituted in the error message * * @return ConstraintViolationBuilderInterface The violation builder */ public function buildViolation($message, array $parameters = array());