<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.dojo.form.decorators">
    <title>Dijit-Spezifische Formular Dekoratore</title>

    <para>
        Die meisten Formular Elemente können den DijitElement Dekorator verwenden, welche die Dijit
        Parameter von den Elementen nimmt und Sie, und andere Metadaten, dem View Helfer übergibt
        der vom Element spezifiziert wurde. Für die Dekoration von Formularen, Unterformularen und
        Anzeigegruppen gibt es trotzdem ein Set von Dekoratoren die den verschiedenen Layout Dijits
        entsprechen.
    </para>

    <para>
        Alle Dijit Dekoratore schauen nach der <property>dijitParams</property> Eigenschaft des
        gegebenen Elements das dekoriert werden soll, und gibt Sie als <varname>$params</varname>
        Array an den verwendeten Dijit View Helfer; diese werden dann von den anderen Eigenschaften
        seperiert damit keine Duplikation von Informationen stattfindet.
    </para>

    <sect3 id="zend.dojo.form.decorators.dijitElement">
        <title>DijitElement Dekorator</title>

        <para>
            Die der <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper
                Dekorator</link> erwartet DijitElement eine <property>helper</property> Eigenschaft
            im Elemente welche dann verwendet wird wenn der View Helfer sich um die Darstellung
            kümmert. Dijit Parameter werden typischerweise direkt vom Element geholt, können aber
            auch als Optionen über den <property>dijitParams</property> Schlüssel übergeben werden
            (der Wert des Schlüssels sollte ein assoziatives Array von Optionen sein).
        </para>

        <para>
            Es ist wichtig das jedes Element eine einzigartige ID hat (die wird vom der
            <methodname>getId()</methodname> Methode des Elements geholt). Wenn doppelte im
            <methodname>dojo()</methodname> View Helfer erkannt werden, wird der Dekorator eine
            Notiz auswerfen, aber dann eine eindeutige ID erstellen indem die Rückgabe von
            <methodname>uniqid()</methodname> an den Identifikator angehängt wird.
        </para>

        <para>
            Die Standardverwendung besteht einfach darin diesen Dekorator als ersten in der
            Dekoratorkette assoziieren, und keine zusätzlichen Optionen zu setzen.
        </para>

        <example id="zend.dojo.form.decorators.dijitElement.usage">
            <title>Verwendung des DijitElement Dekorators</title>

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

    <sect3 id="zend.dojo.form.decorators.dijitForm">
        <title>DijitForm Dekorator</title>

        <para>
            Der DijitForm Dekorator ist dem <link linkend="zend.form.standardDecorators.form">Form
                Dekorator</link> sehr ähnlich; faktisch kann er mit diesem grundsätzlich getauscht
            werden, da er den selben View Helfernamen verwendet ('form').
        </para>

        <para>
            Da <command>dijit.form.Form</command> keine dijit Parameter für die Konfiguration
            benötigt, besteht der grundsätzliche Unterschied darin das dem Dijit Fomular Viewhelfer
            eine <acronym>DOM</acronym> ID übergeben werden muß um sicherzustellen das die
            programtechnische Dijiterstellung funktionieren kann. Der Dekorator stellt das sicher
            indem der Formularname als Identifikator übergeben wird.
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitContainer">
        <title>DijitContainer-basierende Dekoratore</title>

        <para>
            Der <classname>DijitContainer</classname> Dekorator ist in Wirklichkeit eine abstrakte
            Klasse von der eine Anzahl an anderen Dekoratoren erbt. Er bietet die selbe
            Funktionalität wie <link
                linkend="zend.dojo.form.decorators.dijitElement">DijitElement</link> mit der
            zusätzlichen Unterstützung des Titels. Viele Layout Dijits benötigen den Titel oder
            können Ihn verwenden; DijitContainer verwendet die Legend Eigenschaft des Elements wenn
            Sie vorhanden ist, und kann auch die 'legend' oder die 'titel' Dekoratoroption
            verwenden, wenn diese übergeben werden. Der Titel wird übersetzt wenn ein
            Übersetzungsadapter mit einer entsprechenden Übersetzung vorhanden ist.
        </para>

        <para>
            Nachfolgend ist eine Liste an Dekoratoren die von <classname>DijitContainer</classname>
            erben:
        </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>Verwendung des DijitContainer Dekorators</title>

            <programlisting language="php"><![CDATA[
// Einen TabContainer im eigenen Formular verwenden:
$form->setDecorators(array(
    'FormElements',
    array('TabContainer', array(
        'id'          => 'tabContainer',
        'style'       => 'width: 600px; height: 500px;',
        'dijitParams' => array(
            'tabPosition' => 'top'
        ),
    )),
    'DijitForm',
));

// Ein ContentPane im eigenen Unterformular verwenden (welches mit allen
// ausser AccordionContainer verwendet werden kann):
$subForm->setDecorators(array(
    'FormElements',
    array('HtmlTag', array('tag' => 'dl')),
    'ContentPane',
));
]]></programlisting>
        </example>
    </sect3>
</sect2>
