我使用symfony embedRelation方法嵌入表单。代码如下:
public function configure(){ //......
$ this-> embedRelation('Foos as foos');
$ this-> getEmbeddedForm('foos') - > mergePostValidator(new MenuValidatorSchema()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这不起作用。 }
答案 0 :(得分:3)
在Symfony中嵌入表单时,顶级表单会跟踪所有内容。不再直接使用嵌入表单的窗口小部件架构,验证器架构,默认值等。你可以看到sfForm::embedForm
中发生了什么。
请注意,在这种情况下,由于它是一个后验证器,将它添加到顶级表单是完全可以接受的,即:
$this->mergePostValidator(new MenuValidatorSchema());
如果您希望嵌入表单上的验证程序架构并且它没有当前的post验证程序,则可以执行以下操作:
$this->validatorSchema['foos']->setPostValidator(new MenuValidatorSchema());
如果它有现有的,你必须将它们变成sfValidatorAnd,做类似的事情:
$this->validatorSchema['foos']->setPostValidator(new sfValidatorAnd(array(
'validators' => array(
$this->validatorSchema['foos']->getPostValidator(),
new MenuValidatorSchema()
)
)));
最后一个选项的语法只是在顶级表单上设置帖子验证器时可用的首选选项的一个原因。