Php symfony:自定义验证器不能与EmbedderRelation一起工作?

Php symfony:自定义验证器不能与EmbedderRelation一起工作?,php,symfony1,Php,Symfony1,我正在使用symfony EmbeddeRelation方法嵌入表单。代码如下: 公共函数配置(){ // $this->embedderelation('Foos as Foos') $this->getEmbeddedForm('foos')->mergePostValidator(新的MenuValidatorSchema()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我正在使用symfony EmbeddeRelation方法嵌入表单。代码如下:

公共函数配置(){ //

$this->embedderelation('Foos as Foos')

$this->getEmbeddedForm('foos')->mergePostValidator(新的MenuValidatorSchema()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这是行不通的。
}

在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()
    )
)));

最后一个选项的语法只是在顶级表单上设置post验证器是首选选项的原因之一。

StackOverflow是一个社区,您需要尊重一些规则。当有人回答你的问题时,接受这个答案并结束这个问题,不要让它这样。