# Formular Elemente und Dekoratore für Dojo

Aufbauend auf den Dijit View Helfern bietet die Familie der `Zend_Dojo_Form` Klassen die Möglichkeit Dijits nativ in eigenen Formularen anzupassen.

Es gibt drei Optionen für die Anpassung der Dojo Formularelemente in eigenen Formularen:

- Verwenden von `Zend_Dojo::enableForm()`. Das fügt Pluginpfade für Dekoratore und Elemente in allen hinzugefügten Formularelementen, rekursiv, hinzu. Zusätzlich macht es die Viewobjekte dojo-verwendbar. Trotzdem ist zu beachten das jedes Unterformular das nach diesem Aufruf angefügt wird, auch an `Zend_Dojo::enableForm()` übergeben wird.

- Verwenden der Dojo-spezifischen Formular und Unterformular Implementationen, `Zend_Dojo_Form` und `Zend_Dojo_Form_SubForm`. Diese können als sofort verwendbarer Ersatz für `Zend_Form` und `Zend_Form_SubForm` verwendet werden, enthalten alle notwendigen Dekorator und Elementpfade, setzen die Dojo-spezifische Standard-DisplayGroup-Klasse, und machen die View dojo-verwendbar.

- Als letztes, und weitschweifigstes, kan man die notwendigen Dekorator und Elementpfade selbst setzen, die Standard-DisplayGroup-Klasse setzen, und die View dojo-verwendbar machen. Da `Zend_Dojo::enableForm()` das bereits macht, gibt es nur sehr wenig Gründe diesen Weg zu nehmen.

## Aktivieren von Dojo in bestehenden Formularen

"Warte mal,", wird man sagen; "Ich erweitere bereits `Zend_Form` mit meiner eigenen Formularklasse! Wie kann ich Sie Dojo-verwendbar machen?'"

Als erstes, und einfachstes, muß einfach die Erweiterung von `Zend_Form` so geändert werden das `Zend_Dojo_Form` erweitert wird, und alle Plätze in denen man `Zend_Form_SubForm` instanziert so aktualisiert werden das `Zend_Dojo_Form_SubForm` instanziert wird.

Ein zweiter Weg ist der Aufruf von `Zend_Dojo::enableForm()` in der eigenen `init()` Methode des Formulars; wenn die Fomulardefinition komplett ist, muß durch alle Unterformulare iteriert werden um Sie für Dojo zu aktivieren:

    class My_Form_Custom extends Zend_Form
    {
        public function init()
        {
            // Das Formular Dojo-aktivieren:
            Zend_Dojo::enableForm($this);

            // ... die Fomulardefinition hier weiterführen

            // Alle Unterformulare für Dojo aktivieren:
            foreach ($this->getSubForms() as $subForm) {
                Zend_Dojo::enableForm($subForm);
            }
        }
    }

Die Verwendung der Dijit-spezifischen Formulardekoratoren und Elemente ist wie die Verwendung von anderen Formulardekoratoren oder Element.