Изменить вывод HTML Zend_Form - PullRequest
1 голос
/ 27 января 2010

Я пытаюсь изменить HTML, выводимый Zend_Form, используя декораторы.

Я хочу, чтобы выводимый HTML выглядел следующим образом:

<form>
    <fieldset>
    <legend>Your Details</legend>
    <dl>
    <dt>label etc</dt>
    <dd>input etc</dd>
    <dt>label etc</dt>
    <dd>input etc</dd>
    </dl>
    </fieldset>
    <fieldset>
    <legend>Address Details</legend>
    <dl>
    <dt>label etc</dt>
    <dd>input etc</dd>
    <dt>label etc</dt>
    <dd>input etc</dd>
    ... etc ...
    </dl>
    </fieldset>
</form>

Я уже разбил разделы, которые я хочу, в определенных наборах полей, используя группы отображения, например,

$this->addDisplayGroup(array('name','email','telephone'),'yourdetails');
$yourdetails= $this->getDisplayGroup('personal');
$yourdetails->setDecorators(array(
            'FormElements',
            'Fieldset'
));

Это дает мне каждый раздел, находящийся внутри набора полей, но в каждом элементе формы теперь отсутствует обёртка dl, поэтому у меня есть:

<form>
    <fieldset>
    <dt>label etc</dt>
    <dd>input etc</dd>
    <dt>label etc</dt>
    <dd>input etc</dd>
    </fieldset>
    ... etc
</form>

1 Ответ

3 голосов
/ 27 января 2010

Попробуйте это:

$yourdetails->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'dl')),
            'Fieldset'
));

Что должно:

  1. Итерация по элементам
  2. Добавить <dl> вокруг группы элементов
  3. Добавьте <fieldset> вокруг <dl>
...