# Dijit-Spezifische Formular Dekoratore

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.

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

## DijitElement Dekorator

Die der ViewHelper Dekorator erwartet DijitElement eine helper 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 dijitParams Schlüssel übergeben werden (der Wert des Schlüssels sollte ein assoziatives Array von Optionen sein).

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

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

### Verwendung des DijitElement Dekorators

    $element->setDecorators(array(
        'DijitElement',
        'Errors',
        'Label',
        'ContentPane',
    ));

## DijitForm Dekorator

Der DijitForm Dekorator ist dem Form Dekorator sehr ähnlich; faktisch kann er mit diesem grundsätzlich getauscht werden, da er den selben View Helfernamen verwendet ('form').

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

## DijitContainer-basierende Dekoratore

Der `DijitContainer` Dekorator ist in Wirklichkeit eine abstrakte Klasse von der eine Anzahl an anderen Dekoratoren erbt. Er bietet die selbe Funktionalität wie DijitElement 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.

Nachfolgend ist eine Liste an Dekoratoren die von `DijitContainer` erben:

- AccordionContainer

- AccordionPane

- BorderContainer

- ContentPane

- SplitContainer

- StackContainer

- TabContainer

### Verwendung des DijitContainer Dekorators

    // 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',
    ));