2011-06-15 72 views
2

我有一个包含embededForms的表单。在嵌入表单中显示symfony验证后错误

后验证:

$this->validatorSchema->setPostValidator(
    new sfValidatorCallback(
    array('callback' => array($this, 'myPostValidator')) 
) 
); 

我扔在myPostValidator方法错误:

$error = new sfValidatorError($validator, 'invalid ' . $values['embededform1']['field']); 
throw new sfValidatorErrorSchema($validator, array('field' => $error)); 

现在我得到了根形式的全局错误。

我想在正确的字段旁边显示错误。

$values['embededform1']['field'] 
+0

https://groups.google.com/group/symfony-devs/browse_thread/thread/c116a783b1d8fe82?pli=1 – Uwe 2011-06-16 08:06:21

+1

Uwe:那个链接是关于Symfony2的,这是一个完全不同的主题。 – Gerry 2011-06-16 08:25:45

+0

postvalidator设置在哪里?在嵌入式表单中还是在容器表单中? – Gerry 2011-06-16 08:27:28

回答

1

我的第一个建议是在嵌入式表单中添加post验证器。嵌入它将复制验证器到容器窗体,并且用于引发异常的代码应按预期工作。

替代你可以试试你的容器形式回调如下:

$error = new sfValidatorError($validator, 'invalid'); 
$errorschema = new sfValidatorErrorSchema($validator, array('field' => $error)); 
throw new sfValidatorErrorSchema($validator, array('embeddedformname' => $errorschema)); 
+1

不幸的是,在验证容器表单时,嵌入式表单中的验证器不会运行。 – 2011-12-25 22:22:14

+0

这不是真的,它们在嵌入到容器表单时被复制,就像整个validatorschema一样。 – Gerry 2011-12-26 10:30:52

0
$error = new sfValidatorError($validator, 'invalid'); 
$errorschema = new sfValidatorErrorSchema($validator, array('field' => $error)); 
throw new sfValidatorErrorSchema($validator, array('embeddedformname' => $errorschema)); 

这为我工作。

相关问题