symfony: пользовательский валидатор не работает с embedRelation? - PullRequest
0 голосов
/ 11 ноября 2010

Я использую метод symfony embedRelation для встраивания форм. Код выглядит так:

публичная функция configure () { //......

$ this-> embedRelation ('Foos as foos');

$ this-> getEmbeddedForm ('foos') -> mergePostValidator (new MenuValidatorSchema ()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ это не работает. }

1 Ответ

3 голосов
/ 11 ноября 2010

При встраивании форм в Symfony форма верхнего уровня отслеживает все. Схема виджета, схема валидатора, значения по умолчанию и т. Д. Встроенной формы больше не используются напрямую. Вы можете увидеть, что происходит в sfForm::embedForm.

Обратите внимание, что в этом случае, поскольку это средство проверки почты, вполне допустимо добавить его в форму верхнего уровня, т.е.

$this->mergePostValidator(new MenuValidatorSchema());

Если вам нужна схема валидатора во встроенной форме, и у нее нет текущего валидатора поста, вы можете просто сделать:

$this->validatorSchema['foos']->setPostValidator(new MenuValidatorSchema());

Если он уже существует, вам придется превратить их в sfValidator и выполнить что-то вроде:

$this->validatorSchema['foos']->setPostValidator(new sfValidatorAnd(array(
    'validators' => array(
         $this->validatorSchema['foos']->getPostValidator(),
         new MenuValidatorSchema()
    )
)));

Синтаксис этого последнего параметра является лишь одной из причин, по которым установка валидаторов записей в форме верхнего уровня является предпочтительным вариантом, если он доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...