Zend Framework: настройка декораторов по умолчанию для элементов формы через Zend_Config_Ini - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть следующий код в моем файле 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 Ответ

1 голос
/ 28 декабря 2011

Я считаю, что декораторы для элемента также необходимо добавить как 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>

Вам также нужно будет указать декораторы для каждого элемента формы, иначе они будут использовать декораторы формы по умолчанию,Вы можете установить вышеприведенную спецификацию в качестве декоратора по умолчанию, но тогда вам также понадобятся специальные декораторы для кнопок / submit и ввода файлов.

...