Dojoフォーム要素とデコレーター
dijit表示ヘルパーに基き、
クラスのZend_Dojo_Formファミリーは、
あなたのフォームの範囲内でネイティブにDijitsを利用する能力を提供します。
フォームでDojoフォーム要素を利用するために3つの選択肢があります:
Zend_Dojo::enableForm()を使います。
これは配置されたフォーム項目全てにデコレーターと要素のためのプラグイン・パスを再帰的に加えます。
その上、それは表示オブジェクトをDojo使用可能にします。
しかしながら、この呼び出しの後に配置したサブフォームはどれでも
Zend_Dojo::enableForm()に渡されなければいけないことに注意してください。
それぞれDojo特有のフォーム及びサブフォーム実装、
Zend_Dojo_FormとZend_Dojo_Form_SubFormを使います。
これらはZend_Form及びZend_Form_SubFormのドロップインの置き換えとして使うことができ、
適当なデコレーターと要素パスをすべての含み、
Dojo特有のデフォルトのDisplayGroupクラスを設定し、
ビューをDojo使用可能にすることができます。
最後に、最もあきあきしますが、あなた自身で適当なデコレーターと要素パスをセットして、
デフォルトのDisplayGroupクラスをセットし、
ビューをDojo使用可能にすることができます。
Zend_Dojo::enableForm()がすでに行うことなので、
この方法で我慢する理由はほとんどありません。
既存のフォームでDojoを使用可能にする
"ちょっと待って" とあなたは言います;
"私は、自分自身のカスタム・フォーム・クラスでZend_Formをすでに拡張しています!
どのようにしたら、Dojoを使用できますか?"
初めに、
Zend_Formの拡張から
Zend_Dojo_Formの拡張への
最も簡単で単純な変更は
Zend_Form_SubFormのインスタンス化を行う箇所を全て
Zend_Dojo_Form_SubFormのインスタンス化を行うように
更新することです。
2つ目の方法はカスタムフォームのinit()メソッドの中で
Zend_Dojo::enableForm()を呼び出すことです;
フォームの定義を完了させるときは、
Dojoを使用可能にするためにサブフォーム全てを通じて繰り返します:
getSubForms() as $subForm) {
Zend_Dojo::enableForm($subForm);
}
}
}
]]>
dijitに特有のフォームデコレーターと要素の使い方は
まるで他全てのフォーム・デコレーターまたは要素の使い方のようです。