0

我在我的forms.ini文件中有以下代碼,這是行不通的(表單仍然使用默認的DtDd裝飾器)。Zend Framework:通過Zend_Config_Ini設置表單元素的默認裝飾器

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

還要注意:Zend_Form的裝飾器設置是否工作正常生產

    {}元素
,它只是不工作 – 2011-12-28 18:07:37

回答

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>

您還必須爲每個表單元素指定裝飾器,否則它們將使用默認表單裝飾器。你可以將上面的規範設置爲你的默認裝飾器,但是你還需要特殊的裝飾器來完成按鈕/提交和文件輸入。

+0

賓果的元素!那正是我想要完成的!我一直在谷歌搜索整個早上的答案!非常感謝你! – 2011-12-28 18:57:50