<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 17166 -->
<sect1 id="zend.dojo.form" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Dojoフォーム要素とデコレーター</title>

    <para>
        <link linkend="zend.dojo.view.dijit">dijit表示ヘルパーに基き</link>、
        クラスの<classname>Zend_Dojo_Form</classname>ファミリーは、
        あなたのフォームの範囲内でネイティブにDijitsを利用する能力を提供します。
    </para>

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

    <itemizedlist>
        <listitem>
            <para>
                <methodname>Zend_Dojo::enableForm()</methodname>を使います。
                これは配置されたフォーム項目全てにデコレーターと要素のためのプラグイン・パスを再帰的に加えます。
                その上、それは表示オブジェクトをDojo使用可能にします。
                しかしながら、この呼び出しの<emphasis>後に</emphasis>配置したサブフォームはどれでも
                <methodname>Zend_Dojo::enableForm()</methodname>に渡されなければいけないことに注意してください。
            </para>
        </listitem>

        <listitem>
            <para>
                それぞれDojo特有のフォーム及びサブフォーム実装、
                <classname>Zend_Dojo_Form</classname>と<classname>Zend_Dojo_Form_SubForm</classname>を使います。
                これらは<classname>Zend_Form</classname>及び<classname>Zend_Form_SubForm</classname>のドロップインの置き換えとして使うことができ、
                適当なデコレーターと要素パスをすべての含み、
                Dojo特有のデフォルトのDisplayGroupクラスを設定し、
                ビューをDojo使用可能にすることができます。
            </para>
        </listitem>

        <listitem>
            <para>
                最後に、最もあきあきしますが、あなた自身で適当なデコレーターと要素パスをセットして、
                デフォルトのDisplayGroupクラスをセットし、
                ビューをDojo使用可能にすることができます。
                <methodname>Zend_Dojo::enableForm()</methodname>がすでに行うことなので、
                この方法で我慢する理由はほとんどありません。
            </para>
        </listitem>
    </itemizedlist>

    <example id="zend.dojo.form.enable">
        <title>既存のフォームでDojoを使用可能にする</title>

        <para>
            "ちょっと待って" とあなたは言います;
             "私は、自分自身のカスタム・フォーム・クラスで<classname>Zend_Form</classname>をすでに拡張しています！
             どのようにしたら、Dojoを使用できますか？"
        </para>

        <para>
            初めに、
            <classname>Zend_Form</classname>の拡張から
            <classname>Zend_Dojo_Form</classname>の拡張への
            最も簡単で単純な変更は
            <classname>Zend_Form_SubForm</classname>のインスタンス化を行う箇所を全て
            <classname>Zend_Dojo_Form_SubForm</classname>のインスタンス化を行うように
            更新することです。
        </para>

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

        <programlisting language="php"><![CDATA[
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);
        }
    }
}
]]></programlisting>
    </example>

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

    <xi:include href="Zend_Dojo-Form-Decorators.xml">
        <xi:fallback><xi:include href="../../en/module_specs/Zend_Dojo-Form-Decorators.xml" /></xi:fallback>
    </xi:include>
    <xi:include href="Zend_Dojo-Form-Elements.xml">
        <xi:fallback><xi:include href="../../en/module_specs/Zend_Dojo-Form-Elements.xml" /></xi:fallback>
    </xi:include>
    <xi:include href="Zend_Dojo-Form-Examples.xml" />
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
