# Dojoフォーム要素とデコレーター

dijit表示ヘルパーに基き、 クラスの`Zend_Dojo_Form`ファミリーは、 あなたのフォームの範囲内でネイティブにDijitsを利用する能力を提供します。

フォームでDojoフォーム要素を利用するために３つの選択肢があります:

- `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`のインスタンス化を行うように 更新することです。

２つ目の方法はカスタムフォームの`init()`メソッドの中で `Zend_Dojo::enableForm()`を呼び出すことです; フォームの定義を完了させるときは、 Dojoを使用可能にするためにサブフォーム全てを通じて繰り返します:

    class My_Form_Custom extends Zend_Form
    {
        public function init()
        {
            // フォームでDojoを使用可能にする:
            Zend_Dojo::enableForm($this);

            // 引き続きここからフォームの定義

            // サブフォーム全てでDojoを使用可能にする:
            foreach ($this->getSubForms() as $subForm) {
                Zend_Dojo::enableForm($subForm);
            }
        }
    }

dijitに特有のフォームデコレーターと要素の使い方は まるで他全てのフォーム・デコレーターまたは要素の使い方のようです。