Добавление или добавление тегов HTML к элементу формы Zend - PullRequest
5 голосов
/ 03 октября 2010

Для целей стилизации мне нужно поместить открывающий <div> в начале одного элемента и закрывающий тег </div> в конце другого.Просматривая документы для HtmlDecorator, я не могу понять, как сделать это правильно, или если это даже правильный декоратор для использования.Кажется расточительным создавать собственный декоратор просто для этого.

Ответы [ 2 ]

16 голосов
/ 04 октября 2010

На элементе, к которому вы хотите добавить

, добавьте этот декоратор:
array(
    array('openDiv' =>'HtmlTag'),
    array('tag' => 'div', 'openOnly' => true)
)

На элементе, к которому вы хотите добавить

, добавьте этот декоратор:
array(
    array('closeDiv' =>'HtmlTag'),
    array('tag' => 'div', 'closeOnly' => true)
)
7 голосов
/ 03 октября 2010

Похоже, вы могли бы использовать группу отображения с 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 .

...