0

フォームを設定するために、Zend_Config_Iniに次のデフォルトのデコレータがあります。

elementDecorators.viewHelper.decorator = "ViewHelper"
elementDecorators.label.decorator = "Label"
elementDecorators.errors.decorator = "Errors"
elementDecorators.htmlTag.decorator = "HtmlTag"
elementDecorators.htmlTag.options.tag = "li"

Zend_Config_Iniにも次の要素定義があります。

elements.username.type = "text"
elements.username.options.label = "Username:"
elements.username.options.required = true

次の出力が生成されます。

<li>
    <label for="username" class="required">Username:</label>
    <input type="text" name="username" id="username" value="" />
</li>

ここで知っておく必要があるのは、(できればini構成ファイルを使用して)LIタグのIDまたはクラスを設定するにはどうすればよいですか?次の出力が欲しいです:

<li id="form-username-element"> ... </li>

また

<li class="form-2col"> ... </li>

更新:次のように、要素構成自体のすべてのデコレーターをオーバーライドすることで取得できました。

elements.username.options.decorators.viewHelper.decorator = "ViewHelper"
elements.username.options.decorators.label.decorator = "Label"
elements.username.options.decorators.errors.decorator = "Errors"
elements.username.options.decorators.htmlTag.decorator = "HtmlTag"
elements.username.options.decorators.htmlTag.options.tag = "li"
elements.username.options.decorators.htmlTag.options.class = "username-row-element"

ただし、これは機能しますが、すべての要素に適用する必要があるため、多くの重複が発生します(クラス設定自体である最後の行を1回変更するだけです)。では、私が今疑問に思っているのは、iniファイルから、(各要素のすべてのデコレータを複製するのではなく)デフォルトのデコレータを使用してクラス名をオーバーライドする方法があるのでしょうか?

4

1 に答える 1