При встраивании форм в 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()
)
)));
Синтаксис этого последнего параметра является лишь одной из причин, по которым установка валидаторов записей в форме верхнего уровня является предпочтительным вариантом, если он доступен.