在父Zend表单中显示Zend子表单错误

时间:2011-08-29 12:52:52

标签: zend-framework zend-form

我知道可以使用装饰器代码将表单错误设置为在表单顶部呈现,例如:

$form->setDecorators(array(
                       array('FormElements'),
                       array('FormErrors'),

但是,我在我的(父)表单中有子表单,我需要渲染子表单错误 - 聚合并呈现在父表单的顶部。怎么能实现呢?感谢。

1 个答案:

答案 0 :(得分:0)

我对Zend有点新意,但我有类似的实现,可以实现这一点。虽然我在这里还有额外的代码,可以自定义地显示错误,并将子表单放入单独的div中。

要注意的重要部分是通过不指定装饰器FormErrors然后在父窗体上创建新的错误装饰器来关闭两个窗体上的错误的事实。

在我的主表单上,我添加了一个FormErrors装饰器,例如:

$form->setDecorators(array(
    new Zend_Form_Decorator_FormErrors(array(
      'ignoreSubForms'=>false,
      'markupElementLabelStart'=> '<p>',
      'markupElementLabelEnd'=> '</p>',
      'markupListStart'=>'<div class="formErrors">',
      'markupListEnd' => '</div>',
      'markupListItemStart'=>'<div>',
      'markupListItemEnd'=>'</div>'
   )),
   'FormElements'
));

然后在子窗体上关闭窗体错误

$subForm->setDecorators(array(
   'FormElements',
   array(
      array('data' => 'HtmlTag'),
      array('tag' => 'div', 'class' => 'formRow')
   )
));