2013-09-25 2 views
3

Похоже, что функция addValidator для FormBuilder исчезла в последней версии symfony2. Anyonw знает, как переписать эту функциональность?symfony2 2.3 отсутствует FormBuilder :: addValidator() как адаптироваться к FormBuilderInterface?

Вот мой 2,0 код:

$builder-> addValidator(new CallbackValidator(function(FormInterface $form){ 
     $email = $form->get('email')->getData();  
     if (empty($email)) { 
      $form['email']->addError(new FormError("Du måste ange en epostadress för användaren")); 
     } 
    })); 

Я понимаю, что FormBuilder был заменен на «FormBuilderInterface» в 2.1, но я все еще немного запутался, какие шаги мне нужно предпринять, чтобы переписать эту функцию.

ответ

4

Поскольку Symfony 2.1 FormValidatorInterface, который реализован CallbackValidator, устарел и удален в 2.3.

Upgrade to 2.1 file дает решение:

Интерфейс FormValidatorInterface был устаревшим и будет удален в Symfony 2.3.

Если вы внедрили пользовательские валидаторы, используя этот интерфейс, вы можете заменить их прослушивателями прослушивания, прослушивая FormEvents::POST_BIND (или любые другие события *BIND). Если вы использовали класс CallbackValidator, вы должны передать обратный вызов непосредственно на addEventListener.