Похоже, вы могли бы использовать группу отображения с HtmlTag
декоратором.
Что-то вроде:
$form = new Zend_Form();
$form->addElement('text', 'elt1', array(
'label' => 'Element 1',
));
$form->addElement('text', 'elt2', array(
'label' => 'Element 2',
));
$form->addDisplayGroup(array('elt1', 'elt2'), 'myDisplayGroup');
$group = $form->getDisplayGroup('myDisplayGroup');
$group->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'div', 'class' => 'myClass'))
));
Это производит HTML следующим образом:
<form method="post" action="" enctype="application/x-www-form-urlencoded">
<dl class="zend_form">
<div class="myClass">
<dt id="elt1-label"><label class="optional" for="elt1">Element 1</label></dt>
<dd id="elt1-element"><input type="text" value="" id="elt1" name="elt1"></dd>
<dt id="elt2-label"><label class="optional" for="elt2">Element 2</label></dt>
<dd id="elt2-element"><input type="text" value="" id="elt2" name="elt2"></dd>
</div>
</dl>
</form>
Конечно, заклинивание тега
внутри всего этого безумия
- и
- приводит к недопустимой разметке, но я предполагаю, что вы указываете различные декораторы для элементов формы, так что
упаковка, которую вы желаете, в конечном итоге будет действительна.
Также известен для более общих манипуляций с разметкой - AnyMarkup Decorator .