我的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>
我在这里做错了什么?
答案 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>
您还必须为每个表单元素指定装饰器,否则它们将使用默认的表单装饰器。您可以将上面的规范设置为默认的装饰器,但是您还需要特殊的装饰器来进行按钮/提交和文件输入。