Как поместить все входные данные и метки в div, используя Zend Form Decorator? - PullRequest
2 голосов
/ 21 марта 2012

Мой код выглядит следующим образом:

$this->setElementDecorators(array(
   array('ViewHelper'),
   array('Errors', array('tag' => 'div', 'class' => 'error')),
   array('Label', array('tag' => 'span')),
   array('HtmlTag', array('tag' => 'div'))
));

И он дает мне:

<div>
   <div id="email-label"><label for="email" class="required">First name:</label></div>
   <input type="text" name="email" id="email" value="" />
</div>
<div>
   <div id="email-label"><label for="email" class="required">Last name:</label></div>
   <input type="text" name="email" id="email" value="" />
</div>

Но я бы хотел, чтобы все было в div с указанными классами, например:

<div class="item">
   <div class="label"><label for="email" class="required">First name:</label></div>
   <div class="element"><input type="text" name="email" id="email" value="" /></div>
</div>
<div class="item">
   <div class="label"><label for="email" class="required">Last name:</label></div>
   <div class="element"><input type="text" name="email" id="email" value="" /></div>
</div>

Как я могу это сделать?Я прочитал руководство, но у меня нет больше идей: (* ​​1010 *

1 Ответ

4 голосов
/ 22 марта 2012

Попробуйте:

$this->setElementDecorators(array(
   array('ViewHelper'),
   array('Errors', array('tag' => 'div', 'class' => 'error')),
   array('Label', array('tag' => 'span')),
   array('HtmlTag', array('tag' => 'div', 'class' => 'label')),
));

А затем, когда вы визуализируете свою форму, вручную визуализируйте ее так:

<div class="form">
    <form method="<?php echo $this->form->getMethod() ?>"
          action="<?php echo $this->form->getAction() ?>">

        <div class="item">
            <?php echo $this->form->firstName ?></div>
        </div>

        <div class="item">
            <?php echo $this->form->lastName ?></div>
        </div>

        // the rest of your elements...

        <?php echo $this->form->submit ?>
    </form>
</div>

Вывод отдельных элементов формы в вашем представлении дает вам больший контроль над выводом формы и дает гораздо больший контроль над тем, где появляются элементы и HTML, в который они заключены.

Когда я смогу, я буду использовать короткий <?php echo $this->form ?>, но большинство моих форм причудливее, и я использую собственную разметку в сочетании с декораторами элементов, чтобы форма выглядела именно так, как я хочу.

См. Также Использование ViewScript Decorator для вложенных подчиненных форм (Zend Form) и Как удалить все DtDdWrappers и метки в элементах Zend Form .

...