Zend Framework:通过Zend_Config_Ini为表单元素设置默认装饰器

时间:2011-12-28 18:06:25

标签: zend-framework zend-form-element zend-decorators zend-config

我的forms.ini文件中有以下代码,但是无效(渲染的表单仍然使用默认的DtDd装饰器)。

incident.elements.ticket_number.type = "text"
incident.elements.ticket_number.options.label = "Ticket Number"
incident.elements.ticket_number.options.required = true
incident.elements.ticket_number.decorators.elements.decorator = "ViewHelper"
incident.elements.ticket_number.decorators.list_item.decorator = "HtmlTag"
incident.elements.ticket_number.decorators.list_item.options.tag = "li"
incident.elements.ticket_number.decorators.label.decorator = "Label"

显示输出:

<dt id="ticket_number-label">
    <label for="ticket_number" class="required">Ticket Number</label>
</dt>
<dd id="ticket_number-element">
    <input type="text" name="ticket_number" id="ticket_number" value="">
</dd>

但我希望它显示:

<li>
    <label for=...>Ticket Number</label>
    <input type="text" name="ticket_number" id="ticket_number" value="">
</li>

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我相信元素的装饰器也需要添加为options

查看以下内容是否适合您:

incident.elements.ticket_number.type = "text"
incident.elements.ticket_number.options.label = "Ticket Number"
incident.elements.ticket_number.options.required = true
incident.elements.ticket_number.options.decorators.viewhelper.decorator = "ViewHelper"
incident.elements.ticket_number.options.decorators.label.decorator = "Label"
incident.elements.ticket_number.options.decorators.errors.decorator = "Errors"
incident.elements.ticket_number.options.decorators.description.decorator = "Description"
incident.elements.ticket_number.options.decorators.htmltag.decorator = "HtmlTag"
incident.elements.ticket_number.options.decorators.htmltag.options.tag = "li"

请注意,我还稍微更改了装饰器的顺序,以便<label>标记也包含在<li>标记中。如果标签在HtmlTag之后,我发现它会在输入前添加,但没有包含在<li>

您还必须为每个表单元素指定装饰器,否则它们将使用默认的表单装饰器。您可以将上面的规范设置为默认的装饰器,但是您还需要特殊的装饰器来进行按钮/提交和文件输入。