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

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

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

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

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

        <para>
            各々の要素がユニークなID（要素の<code>getId()</code>メソッドから取得されるように）
            を持つことは、重要です。
            繰り返しが<code>dojo()</code>ビュー・ヘルパーの範囲内で検出されるならば、
            デコレーターは通知の引き金を引いて、
            識別子に<code>uniqid()</code>からの戻りを追加することによってユニークな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>
            設定のためにdijit.form.Formは少しもdijitパラメータを必要としないので、
            プログラムされたdijitの生成が確実に機能できるように、
            DOM IDが渡されるdijitフォーム・ビュー・ヘルパーが必要とすることが主な違いです。
            識別子としてフォーム名を渡すことによって、デコレーターはこれを確実にします。
        </para>
    </sect3>

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

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

        <para>
            以下は、<code>DijitContainer</code>から継承するデコレーターの一覧です:
        </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:
-->
