<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect2 id="zend.dojo.form.decorators">
    <title>Dijit に特有のフォーム・デコレーター</title>

    <para>
        大部分のフォーム要素は Dijit 要素デコレーター
        （要素から dijit パラメータをとって来ます）
        を使うことができ、
        要素で特定されたビュー・ヘルパーに、
        これらと他のメタデータを渡せます。
        しかしながら、フォームやサブ・フォーム及び表示グループをデコレートするために、
        いろいろなレイアウト dijits に該当するデコレーターのセットがあります。
    </para>

    <para>
        dijitデコレーターの全てで、
        デコレートされた与えられた要素の <property>dijitParams</property> プロパティを探して、
        <varname>$params</varname> 配列として使用される dijit ビュー・ヘルパーに押し付けます;
        それから、情報の重複が起こらないように、これらは他のどの特性からも分離されます。
    </para>

    <sect3 id="zend.dojo.form.decorators.dijitElement">
        <title>Dijit 要素デコレーター</title>

        <para>
            ちょうど <link linkend="zend.form.standardDecorators.viewHelper">View ヘルパ・デコレーター</link>のように、
            レンダリングのときにビュー・ヘルパーとして使用される要素で、
            Dijit 要素は <property>helper</property> プロパティを予期します。
            Dijit パラメータは一般的に直接要素から引き出されますが、
            <property>dijitParams</property> キー（そのキーの値は、任意の連想配列でしょう）による、
            オプションとして渡されるかもしれません。
        </para>

        <para>
            各々の要素がユニークな ID （要素の <methodname>getId()</methodname> メソッドから取得されるように）
            を持つことは、重要です。
            繰り返しが <methodname>dojo()</methodname> ビュー・ヘルパーの範囲内で検出されるならば、
            デコレーターは通知の引き金を引いて、
            識別子に <methodname>uniqid()</methodname> からの戻りを追加することによってユニークな ID を作成します。
        </para>

        <para>
            標準的な使用法では、
            単純に最初にデコレーター・チェーンにこのデコレーターを
            追加オプションなしで、結びつけます。
        </para>

        <example id="zend.dojo.form.decorators.dijitElement.usage">
            <title>Dijit 要素デコレーターの使用法</title>

            <programlisting language="php"><![CDATA[
$element->setDecorators(array(
    'DijitElement',
    'Errors',
    'Label',
    'ContentPane',
));
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitForm">
        <title>Dijit フォーム・デコレーター</title>

        <para>
            Dijit フォーム・デコレーターは、
            <link linkend="zend.form.standardDecorators.form">フォーム・デコレーター</link>と非常に似ています;
            実際、それが
            同じビュー・ヘルパー名 ('form') を利用するので、実際、基本的に入れ替えて使うことができます。
        </para>

        <para>
            設定のために <command>dijit.form.Form</command> は少しも dijit パラメータを必要としないので、
            プログラムされた dijit の生成が確実に機能できるように、
            <acronym>DOM</acronym> ID が渡される dijit フォーム・ビュー・ヘルパーが必要とすることが主な違いです。
            識別子としてフォーム名を渡すことによって、デコレーターはこれを確実にします。
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitContainer">
        <title>DijitContainer ベースのデコレーター</title>

        <para>
            <classname>DijitContainer</classname> デコレーターは、実は、
            いろいろな他のデコレーターが由来する抽象クラスです。
            タイトル・サポートの追加で、それは <link
                linkend="zend.dojo.form.decorators.dijitElement">Dijit要素</link> の同じ機能を提供します。
            多くのレイアウト dijit はタイトルを要求するか、利用できます;
            利用できるのであれば、 DijitContainer は要素の説明プロパティを利用して、
            渡されるならば、 'legend' もしくは 'title' デコレーター・オプションのどちらかを利用することもできます。
            対応する翻訳による翻訳アダプターが存在するならば、タイトルは翻訳されます。
        </para>

        <para>
            以下は、 <classname>DijitContainer</classname> から継承するデコレーターの一覧です:
        </para>

        <itemizedlist>
            <listitem><para>AccordionContainer</para></listitem>
            <listitem><para>AccordionPane</para></listitem>
            <listitem><para>BorderContainer</para></listitem>
            <listitem><para>ContentPane</para></listitem>
            <listitem><para>SplitContainer</para></listitem>
            <listitem><para>StackContainer</para></listitem>
            <listitem><para>TabContainer</para></listitem>
        </itemizedlist>

        <example id="zend.dojo.form.decorators.dijitContainer.usage">
            <title>Dijit コンテナ・デコレーター使用法</title>

            <programlisting language="php"><![CDATA[
// フォームで TabContainer を使う:
$form->setDecorators(array(
    'FormElements',
    array('TabContainer', array(
        'id'          => 'tabContainer',
        'style'       => 'width: 600px; height: 500px;',
        'dijitParams' => array(
            'tabPosition' => 'top'
        ),
    )),
    'DijitForm',
));

// サブフォームで ContentPane を使う
// (AccordionContainer 以外の全てで使うことができます):
$subForm->setDecorators(array(
    'FormElements',
    array('HtmlTag', array('tag' => 'dl')),
    'ContentPane',
));
]]></programlisting>
        </example>
    </sect3>
</sect2>
<!--
vim:se ts=4 sw=4 et:
-->
