Я немного новичок в 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')
)
));