0

我的整个表单上有 Zend_Form_Decorator_HtmlTag。我想得到的是这样的:

<div class="form-elements">
    <div>
        <label>blah</label>
        <input type="text" />
    </div>

    <div>
        <label>blah 2</label>
        <input type="checkbox" />
    </div>
</div>

<div class="form-buttons">
    <input type="submit" />
</div>

如何仅获取 HtmlTag(此处输入)中的某些元素,以及其他元素标签中的其他元素?我现在有很多表单,所以如果可以只修改我的基本表单类,那就太好了。

4

1 回答 1

1

将此方法添加到您的基本表单类:

public function loadDefaultDecorators()
{
    $elementsToGroup = array();
    foreach ($this->getElements() as $element) {
        if ($element->getType() != 'Zend_Form_Element_Submit') {
            $elementsToGroup[] = $element;
        }
    }
    if ($elementsToGroup) {
        $this->addDisplayGroup($elementsToGroup, 'form-elements', array(
            'order' => 0,
            'decorators' => array(
                'FormElements',
                array('HtmlTag', array('tag'=>'div', 'class' => 'form-elements'))
            )
        ));
    }

    parent::loadDefaultDecorators();
}

它循环遍历所有表单元素,并将任何不是按钮的内容添加到显示组,然后使用覆盖默认字段集的“div”装饰器将其添加到表单中。'order' 参数确保元素将保留在表单的开头。

您可以使用按钮本身上的普通 HtmlTag 装饰器来处理按钮周围的 div。

是否可以仅使用 CSS 而不是使用 CSS 来实现您想要的效果可能值得一看,因为如果您想按照预期使用显示组,这种方法可能会在将来给您带来一些问题。

于 2013-01-11T09:59:13.940 回答