フォームを設定するために、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ファイルから、(各要素のすべてのデコレータを複製するのではなく)デフォルトのデコレータを使用してクラス名をオーバーライドする方法があるのでしょうか?