デコレータを使用して Zend フォームのスタイルを設定しようとしているところです。以前は、これらの問題を回避するために、zend_form を拡張するフォーム スクリプトを作成し、必要なバリデータやラベルなどを追加してから、ビュー スクリプトから要素を取得し、必要 $form->getElement('my_form_element');
な CSS タグを要素にラップする方法を使用していました。組み込みのデコレータの使い方を学ぶべきだと思ったのですが、時間の無駄だと感じ始めています。私の古い方法は簡単に思えますが、カスタム デコレータの使用を改善する理由が見当たらないのでしょうか?
2 に答える
Bootstrap を使用する場合など、フォームに特定の繰り返し可能なマークアップがある場合、デコレータは便利です。それ以外は、特に html/css の得意な人がいる場合は避けます。
一般に、デコレーターは、コードのコア機能に触れることなく機能を動的に追加し、コードの再利用を改善するために使用されます。ただしZend_Form
、デコレーター システムは (Zend_Form
一般的にも) 直感的ではなく、過度に設計されているため、開発者がより優れた、より直感的なコードをより迅速に作成できるようにするという、本来すべきこととは正反対のことを行っていると思います。
私の意見では、 の使用はZend_Form_Decorator
、複数の異なるタイプの要素でプロジェクト全体で再利用する予定の拡張ロジックがある場合にのみ意味があります。
2 つの例を挙げましょう。
- 素敵なアイコンとおしゃれな JavaScript ホバー ボックスを備えた任意のフォーム要素の横にツールヒント アイコンを追加したいとします。
- AJAX リクエストを送信し、要素の横に成功した場合は緑色のチェック マークを、失敗した場合は赤い十字アイコンを追加することで、データの入力時に要素を直接検証する必要があります。
デコレーターを使用すると、追加された機能のロジックを基になる要素のロジックから分離できるため、同じコードを使用して、ツールチップやライブ検証機能をテキスト ボックス要素やその他の要素に簡単に追加できます。要素に必要なすべてのデコレータを追加します。
また、Zend Framwork の主任開発者である Matthew Weier O'Phinney による素晴らしい記事もあり、多くの例とともにデコレータを使用する動機についての背景を説明しています。