Zend Framework で構築している Web プロジェクトの 1 つに、次の構造のフォームがあります。
<form>
<fieldset>
<h2>Header</h2>
<ul>
<li>
<label />
<div>
<input />
<small>Helptext</small>
</div>
</li>
<li class="error"> <!-- This one has errors -->
<label />
<div>
<input />
<ul class="errors">
<li>Error message</li>
</ul>
<small>Helptext</small>
</div>
</li>
</ul>
</fieldset>
</form>
Zend Framework の標準デコレータを使用して、この構造を構築できますが、1 つだけ例外があります。error
検証エラーなどがある要素の li にクラスを追加できるようにする必要があります。次のバリデータを使用します。
- ビューヘルパー
- エラー
- HTMLタグ (
'tag' => 'small', 'placement' => 'append'
) - HTMLタグ (
'tag' => 'div'
) - ラベル
- HTMLタグ (
'tag' => 'li'
)
デフォルトのバリデータは無効になっています。(私は Zend_Form を拡張するカスタム フォーム クラス$element->setDecorators()
のメソッドで使用しinit()
ます。) したがって、要素に検証エラーがある場合、最後のデコレータにクラス "エラー" を追加するという問題が発生します。
これを行う便利な方法を知っている人はいますか?要素のデフォルトの render メソッドをオーバーライドして、検証エラーがあるかどうかを確認し、名前付きデコレータにクラス オプションを追加することもできると思いますが、それはあまりエレガントではありません。これを行うための標準化された方法があるかどうか疑問に思っています...ちなみに、Zend Framework 1.11を使用しています。
乾杯、エリック
概要:
検証エラーがある場合、Zend_Form_Element の HtmlTag デコレータにクラス オプションを追加する方法は?