更改Zend_Form的HTML输出

时间:2010-01-27 16:05:23

标签: zend-framework zend-form decorator

我正在尝试使用装饰器更改Zend_Form输出的html。

我希望输出的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 个答案:

答案 0 :(得分:2)

试试这个:

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

应该:

  1. 遍历元素
  2. 在元素组
  3. 周围添加<dl>
  4. <fieldset>
  5. 周围添加<dl>