<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15156 -->
<!-- Reviewed: no -->
<sect1 id="zend.form.standardElements">
    <title>Standard Form Elemente die mit dem With Zend Framework ausgeliefert werden</title>

    <para>
        Zend Framework wird mit konkreten Element Klassen ausgeliefert die die meisten HTML
        Form Elemente abdecken. Die meisten spezifizieren einfach einen speziellen View Helfer
        zur Verwendung wenn das Element dekoriert wird, aber einige bieten zusätzliche
        Funktionalitäten an. Nachfolgend ist eine Liste aller solcher Klassen, sowie eine
        Beschreibung der Funktionalität die Sie anbieten.
    </para>

    <sect2 id="zend.form.standardElements.button">
        <title>Zend_Form_Element_Button</title>

        <para>
            Wird für die Erstellung von HTML Button Elementen verwendet wobei
            <classname>Zend_Form_Element_Button</classname>
            <link linkend="zend.form.standardElements.submit">Zend_Form_Element_Submit</link>
            erweitert, und seine eigene Funktionalität hinzufügt. Sie spezifiziert den 'formButton'
            View Helfer für die Dekoration.
        </para>

        <para>
            Wie das Submit Element, verwendet es das Label des Elements als den Elementwert für
            Darstellungszwecke; in anderen Worten, um den Text des Buttons zu setzen, muß der
            Wert des Elements gesetzt werden. Das Label wird übersetzt wenn ein
            Übersetzungsadapter vorhanden ist.
        </para>

        <para>
            Weil das Label als Teil des Elements verwendet wird, verwendet das Button Element nur
            den <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper</link> und den
            <link linkend="zend.form.standardDecorators.dtDdWrapper">DtDdWrapper</link> Dekorator.
        </para>

        <para>
            Nach der Veröffentlichung oder Prüfung einer Form, kann geprüft werden ob der gegebene
            Button geklickt wurd indem die <code>isChecked()</code> Methode verwendet wird.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.captcha">
        <title>Zend_Form_Element_Captcha</title>

        <para>
            CAPTCHAs werden verwendet um automatische Übermittlung von Formularen durch Bots und andere
            automatische Prozesse zu verhindern.
        </para>

        <para>
            Das Captcha Formularelement erlaubt es den
            <link linkend="zend.captcha.adapters">Zend_Captcha Adapter</link> der als Formular CAPTCHA
            verwendet werden soll anzupassen. Er setzt dann diesen Adapter als Prüfung für das Objekt,
            und verwendet den Captcha Dekorator für die Darstellung (welche den CAPTCHA Adapter aufruft).
        </para>

        <para>
            Adapter können alle Adapter in <classname>Zend_Captcha</classname> sein, sowie jeder eigene Adapter
            der irgendwo anders definiert wurde. Um das z uerlauben, kann ein zusätzlicher Schlüssel für
            den Plugin Ladetyp, 'CAPTCHA' oder 'captcha' übergeben werden, wenn der Plugin Loader Präfixpfad
            spezifiziert wird:
        </para>

        <programlisting role="php"><![CDATA[
$element->addPrefixPath('My_Captcha', 'My/Captcha/', 'captcha');
]]></programlisting>

        <para>
            Captcha's können dann durch Verwendung der <code>setCaptcha()</code> Methode registriert werden,
            welche entweder eine konkrete CAPTCHA Instanz, oder den Kurznamen des CAPTCHA Adapters nimmt:
        </para>

        <programlisting role="php"><![CDATA[
// Konkrete Instanz:
$element->setCaptcha(new Zend_Captcha_Figlet());

// Verwendung von Kurznamen:
$element->setCaptcha('Dumb');
]]></programlisting>

        <para>
            Wenn das Element über die Konfiguration geladen werden soll, kann entweder der Schlüssel
            'captcha' mit einem Array das den Schlüssel 'captcha' enthält spezifiziert werden, oder beide
            Schlüssel 'captcha' und 'captchaOptions':
        </para>

        <programlisting role="php"><![CDATA[
// Verwendung eines einzelnen captcha Schlüssels:
$element = new Zend_Form_Element_Captcha('foo', array(
    'label' => "Bitte verifizieren Sie das Sie menschlich sind",
    'captcha' => array(
        'captcha' => 'Figlet',
        'wordLen' => 6,
        'timeout' => 300,
    ),
));

// Verwendung von beiden, captcha und captchaOptions:
$element = new Zend_Form_Element_Captcha('foo', array(
    'label' => "Bitte verifizieren Sie das Sie menschlich sind",
    'captcha' => 'Figlet',
    'captchaOptions' => array(
        'captcha' => 'Figlet',
        'wordLen' => 6,
        'timeout' => 300,
    ),
));
]]></programlisting>

        <para>
            Der verwendete Dekorator wird durch die Abfrage des Captcha Adapters erkannt. Standardmäßig wird
            der <link linkend="zend.form.standardDecorators.captcha">Captcha Dekorator</link> verwendet,
            aber ein Adapter kann einen anderen über die <code>getDecorator()</code> Methode spezifizieren.
        </para>

        <para>
            Wie beschrieben, fungiert der Captcha Adapter selbst als Prüfnug für das Element. Zusätzlich
            wird die NotEmpty Prüfung nicht verwendet, und das Element wird als benötigt markiert. In
            den meisten Fällen sollte sonst nichts anderes mehr notwendig sein um das Captcha im
            eigenen Formular zu haben.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.checkbox">
        <title>Zend_Form_Element_Checkbox</title>

        <para>
            HTML Checkboxen erlauben es spezifische Werte zurückzugeben, arbeiten aber
            grundsätzlich als Boolean. Wenn Sie angehackt sind, wird der Wert der Checkbox übertragen. Wenn Sie
            nicht angehackt sind, wird nichts übertragen. Intern erzwingt
            <classname>Zend_Form_Element_Checkbox</classname> diesen Status.
        </para>

        <para>
            Standardmäßg ist der angehackte Wert '1', und der nicht angehackte Wert '0'. Dieser
            Wert kann spezifiziert werden indem die <code>setCheckedValue()</code> und
            <code>setUncheckedValue()</code> Zugriffsmethoden verwendet werden. Intern wird,
            jedesmal wenn der Wert gesetzt wird, wenn der angebotene Wert dem angehackten Wert
            entspricht, er gesetzt, aber jeder andere Wert bewirkt das der nicht angehackte Wert
            gesetzt wird.
        </para>

         <para>
            Zusätzlich setzt, das Setzen des Werte, die <code>checked</code> Eigenschaft der
            Checkbox. Das kann abgefragt werden indem <code>isChecked()</code> verwendet wird oder
            einfach auf die Eigenschaft zugegriffen wird. Das Verwenden der
            <code>setChecked($flag)</code> Methode setzt beides, den Status des Flags sowie den
            entsprechenden gecheckten oder nicht gecheckten Wert im Element. Bitte verwenden Sie
            diese Methode wenn der gecheckte Status eines Checkbox Elements gesetzt wird um
            sicherzustellen das der Wert richtig gesetzt wird.
        </para>

        <para>
            <classname>Zend_Form_Element_Checkbox</classname> verwendet den 'formCheckbox' View Helfer. Der
            angehackte Wert wird immer verwendet um Sie zu veröffentlichen.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.file">
        <title>Zend_Form_Element_File</title>

        <para>
            Das File Formularelement bietet einen Mechanismus um File Upload-felder in eigenen Formularen
            zu Unterstützen. Es verwendet intern
            <link linkend="zend.file.transfer.introduction">Zend_File_Transfer</link> um diese Funktionalität
            zu bieten, und den <code>FormFile</code> Viewhelfer sowie den <code>File</code> Decorator um das
            Formularelement anzuzeigen.
        </para>

        <para>
            Standardmäßig verwendet es den <code>Http</code> Transferadapter, welcher das <code>$_FILES</code>
            Array prüft und es erlaubt Prüfungen und Filter hinzuzufügen. Prüfungen und Filter die dem
            Formularelement hinzugefügt werden, werden dem Transferadapter hinzugefügt.
        </para>

        <example id="zend.form.standardElements.file.usage">
            <title>Verwendung des File Formularelements</title>

            <para>
                Die obige Erklärung der Verwendung des File Formularelements mag geheimnisvoll erscheinen,
                aber die aktuelle Verwendung ist relativ trivial:
            </para>

            <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Ein Bild hochladen:')
        ->setDestination('/var/www/upload');
// Nur 1 Datei sicherstellen
$element->addValidator('Count', false, 1);
// Maximal 100k
$element->addValidator('Size', false, 102400);
// Nur JPEG, PNG, und GIFs
$element->addValidator('Extension', false, 'jpg,png,gif');
$form->addElement($element, 'foo');
]]></programlisting>

            <para>
                Man sollte auch den richtigen Encodingtyp sicherstellen in dem das Formular angeboten wird.
                Das kann getan werden indem das 'enctype' Attribut des Formulars gesetzt wird:
            </para>

            <programlisting role="php"><![CDATA[
$form->setAttrib('enctype', 'multipart/form-data');
]]></programlisting>

            <para>
                Nachdem das Formular erfolgreich geprüft wurde, muß die Datei empfangen werden um Sie an Ihrem
                endgültigen Ziel zu speichern indem <code>receive()</code> verwendet wird. Zusätzlich kann man
                das endgültige Ziel ermittelt werden indem <code>getFileName()</code> verwendet wird:
            </para>

            <programlisting role="php"><![CDATA[
if (!$form->isValid) {
    print "Uh oh... Prüfungsfehler";
}

if (!$form->foo->receive()) {
    print "Fehler beim Empfangen der Datei";
}

$location = $form->foo->getFileName();
]]></programlisting>

        </example>

        <note>
            <title>Standardmäßige Ablage von Uploads</title>

            <para>
                Standardmäßig werden Dateien in das Temp Verzeichnis des Systems hochgeladen.
            </para>
        </note>

        <note>
            <title>Datei Werte</title>

            <para>
                In HTTP hat das File Element keinen Wert. Aus diesem Grund, und aus Gründen der Sicherheit
                erhält gibt <code>getValue()</code> nur den Dateinamen der hochgeladenen Datei zurück und
                nicht den kompletten Pfad. Wenn man die kompletten Informationen benötigt kann
                <code>getFileName()</code> aufgerufen werden, welches sowohl den Pfad als auch den Namen
                der Datei zurückgibt.
            </para>
        </note>

        <para>
            Standardmäßig wird die Datei automatisch empfangen wenn man <code>getValues()</code>
            auf dem Formular aufruft. Der Grund hinter diesem Verhalten ist, das die Datei selbst
            der Wert des File Elements ist.
        </para>

        <programlisting role="php"><![CDATA[
$form->getValues();
]]></programlisting>

        <note>
            <para>
                Deshalb hat ein weiterer Aufruf von <code>receive()</code> nach dem Aufruf von
                <code>getValues()</code> keinen Effekt. Auch die Erstellung einer Instanz von
                <classname>Zend_File_Transfer</classname> wird keinen Effekt haben da es keine weitere
                Datei zum Empfangen gibt.
            </para>
        </note>

        <para>
            Trotzdem kann es manchmal gewünscht sein <code>getValues()</code> aufzurufen ohne das
            die Datei empfangen wird. Man kann dies erreichen indem
            <code>setValueDisabled(true)</code> aufgerufen wird. Um den aktuellen Wert dieses
            Flags zu erhalten kann man <code>isValueDisabled()</code> aufrufen.
        </para>

        <example id="zend.form.standardElements.file.retrievement">
            <title>Datei explizit empfangen</title>

            <para>
                Zuerst <code>setValueDisabled(true)</code> aufrufen.
            </para>

            <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Ein Bild hochladen:')
        ->setDestination('/var/www/upload')
        ->setValueDisabled(true);
]]></programlisting>

            <para>
                Jetzt wird die Datei nicht mehr empfangen wenn man <code>getValues()</code>
                aufruft. Man muß also <code>receive()</code> vom Datei Element, oder einer
                Instanz von <classname>Zend_File_Transfer</classname> selbst aufrufen.
            </para>

            <programlisting role="php"><![CDATA[
$values = $form->getValues();

if ($form->isValid($form->getPost())) {
    if (!$form->foo->receive()) {
        print "Upload Fehler";
    }
}
]]></programlisting>
        </example>

        <para>
            Es gibt verschiedene Stati von hochgeladenen Dateien welche mit den folgenden Optionen
            geprüft werden können:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <code>isUploaded()</code>: Prüft ob das Dateielement hochgeladen wurde oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>isReceived()</code>: Prüft ob das Dateielement bereits empfangen wurde.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>isFiltered()</code>: Prüft ob die Filter bereits dem Dateielement
                    angehängt wurden oder nicht.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.form.standardElements.file.isuploaded">
            <title>Prüfen ob eine optionale Datei hochgeladen wurde</title>

            <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Ein Bild hochladen:')
        ->setDestination('/var/www/upload')
        ->setRequired(false);
$element->addValidator('Size', false, 102400);
$form->addElement($element, 'foo');

// Das foo Dateielement is optional, aber wenn es angegeben wurde, gehe hier herein
if ($form->foo->isUploaded()) {
    // Die foo Datei ist angegeben... mach was
}
]]></programlisting>
        </example>

        <para>
            <classname>Zend_Form_Element_File</classname> unterstützt auch mehrere Dateien. Durch den Aufruf der
            <code>setMultiFile($count)</code> Methode kann die Anzahl an File Elementen die man erstellen
            will festgelegt werden. Das verhindert das die selben Einstellungen mehrere Male durchgeführt
            werden müssen.
        </para>

        <example id="zend.form.standardElements.file.multiusage">
            <title>Mehrere Dateien setzen</title>

            <para>
                Die Erstellung eines Multifile Elements ist das gleiche wie das Erstellen eines einzelnen
                Elements. Man muß nur <code>setMultiFile()</code> aufrufen nachdem das Element erstellt wurde:
            </para>

            <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Ein Bild hochladen:')
        ->setDestination('/var/www/upload');
// Mindestens 1 und maximal 3 Dateien sicherstellen
$element->addValidator('Count', false, array('min' => 1, 'max' => 3));
// Auf 100k limitieren
$element->addValidator('Size', false, 102400);
// Nur JPEG, PNG, und GIFs
$element->addValidator('Extension', false, 'jpg,png,gif');
// 3 identische Dateielemente definieren
$element->setMultiFile(3);
$form->addElement($element, 'foo');
]]></programlisting>

            <para>
                In der View erhält man nun 3 identische File Upload Elemente welche alle die gleichen
                Einstellungen verwenden. Um die Multifile Anzahl zu erhalten kann man einfach
                <code>getMultiFile()</code> aufrufen.
            </para>

        </example>

        <note>
            <title>File Elemente in Subformularen</title>

            <para>
                Wenn File Elemente in Subformularen verwendet werden muß man eindeutige Namen setzen.
                Wenn man zum Beispiel ein File Element in Subform1 "file" benennt, muß es in Subform2
                einen anderen Namen erhalten.
            </para>

            <para>
                Sobald es 2 identisch benannte File Elemente gibt, wird das zweite Element entweder
                nicht dargestellt oder nicht übertragen.
            </para>
        </note>

        <para>
            Um die Größe der Datei zu begrenzen, die vom Client hochgeladen wird, kann die maximale
            Dateigröße spezifiziert werden indem die <code>MAX_FILE_SIZE</code> Option im Formular
            gesetzt wird. Sobald der Wert, durch die Verwendung der <code>setMaxFileSize($size)</code>
            Methode, gesetzt ist, wird er mit dem File Element dargestellt.
        </para>

        <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Ein Bild hochladen:')
        ->setDestination('/var/www/upload')
        ->addValidator('Size', false, 102400) // Limitiert auf 100k
        ->setMaxFileSize(102400); // Limitiert die Dateigröße auf der Clientseite
$form->addElement($element, 'foo');
]]></programlisting>

        <note>
            <title>MaxFileSize mit mehreren File Elementen</title>

            <para>
                Wenn mehrere File Elemente im Formular verwendet werden sollte man <code>MAX_FILE_SIZE</code>
                nur einmal setzen. Wird es nochmals gesetzt überschreibt es den vorherigen Wert.
            </para>

            <para>
                Beachte, das das auch der Fall ist wenn man mehrere Formulare verwendet.
            </para>
        </note>
    </sect2>

    <sect2 id="zend.form.standardElements.hidden">
        <title>Zend_Form_Element_Hidden</title>

        <para>
            Versteckte Elemente fügen Daten ein die übertragen werden sollen, welche der Benutzer
            aber nicht manipulieren soll. <classname>Zend_Form_Element_Hidden</classname> ermöglicht das
            mit dem 'formHidden' View Helfers.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.hash">
        <title>Zend_Form_Element_Hash</title>

        <para>
            Dieses Element bietet Schutz vor CSRF Attacken auf Forms, und stellt sicher das die
            Daten die übertragen werden von der Benutzersession stammen die die Form erstellt hat
            und nicht durch ein bösartiges Skript. Sicherheit wird ermöglicht durch das hinzufügen
            eines Hash Elements zur form und dessen Prüfung wenn die Form übermittelt wird.
        </para>

        <para>
            Der Name des Hash Elements sollte einmalig sein. Wir emphehlen die Verwendung der
            <literal>salt</literal> Option für das Element- damit zwei Hashes mit dem gleichen
            Namen und unterschiedlichen Salts nicht kollidieren:
        </para>

        <programlisting role="php"><![CDATA[
$form->addElement('hash', 'no_csrf_foo', array('salt' => 'unique'));
]]></programlisting>

        <para>
            Das Salt kann später gesetzt werden durch Verwendung der <code>setSalt($salt)</code>
            Methode.
        </para>

        <para>
            Intern speichert das Element einen eindeutigen Identifikator indem es
            <classname>Zend_Session_Namespace</classname> verwendet, und danach bei der Übertragung checkt
            (es wird geprüft das die TTL nicht abgelaufen ist). Die 'Identical' Prüfung wird
            Internally, the element stores a unique identifier using
            <classname>Zend_Session_Namespace</classname>, and checks for it at
            submission (checking that the TTL has not expired). The 'Identical'
            validator is then used to ensure the submitted hash matches the
            stored hash.
        </para>

        <para>
            Der 'formHidden' View Helfer wird verwendet um das Element in der Form darzustellen.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.Image">
        <title>Zend_Form_Element_Image</title>

        <para>
            Bilder können als Form Elemente verwendet werden und man kann diese Bilder als graphische
            Elemente auf Form Buttons verwenden.
        </para>

        <para>
            Bilder benötigen eine Bildquelle. <classname>Zend_Form_Element_Image</classname> erlaube dessen
            Spezifikation durch Verwendung der <code>setImage()</code> Zugriffsmethode (oder des
            'image' Konfigurations Schlüssels). Es kann auch optional ein Wert spezifiziert werden
            der zu verwenden ist wenn das Bild übertragen wird indem die Zugriffsmethode
            <code>setImageValue()</code> verwendet wird (oder der 'imageValue Konfigurations
            Schlüssel). Wenn der Wert der für das Element gesetzt ist, mit <code>imageValue</code>
            übereinstimmt, gibt <code>isChecked()</code> true zurück.
        </para>

        <para>
            Bild Elemente verwenden den
            <link linkend="zend.form.standardDecorators.image">Image Decorator</link> für die
            Darstellung, zusätzlich zu den Standard Error, HtmlTag und Label Dekoratoren. Es kann
            optional ein Tag für den <code>Image</code> Dekorator spezifiziert werden der das
            Bild einbettet.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.multiCheckbox">
        <title>Zend_Form_Element_MultiCheckbox</title>

        <para>
            Oft hat man ein Set von zusammenhängenden Checkboxen, und die Ergebnisse sollen
            gruppiert werden. Das ist so ähnlich wie
            <link linkend="zend.form.standardElements.multiselect">Multiselect</link> aber statt
            das Sie in einer DropDown Liste sind, müssen Checkbox/Werte Paare dargestellt werden.
        </para>

        <para>
            <classname>Zend_Form_Element_MultiCheckbox</classname> macht das in einem Rutsch. Wie alle
            anderen Elemente kann mit der Erweiterung des Basis MultiElements eine Liste von
            Optionen spezifiziert werden und einfach gegen die selbe Liste geprüft werden. Der
            'formMultiCheckbox' View Helfer stellt sicher das Sie als Array bei der Übermittlung
            der Form zurückgegeben werden.
        </para>

        <para>
            Standardmäßig registriert dieses Element die <code>InArray</code> Prüfung welche gegen
            Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann deaktiviert werden
            indem entweder <code>setRegisterInArrayValidator(false)</code> aufgerufen, oder indem
            ein false Wert an den <code>registerInArrayValidator</code> Konfigurationsschlüssel übergeben
            wird.
        </para>

        <para>
            Die verschiedenen Checkbox Optionen können mit den folgenden Methoden manipuliert
            werden:
        </para>

        <itemizedlist>
            <listitem><para><code>addMultiOption($option, $value)</code></para></listitem>

            <listitem><para><code>addMultiOptions(array $options)</code></para></listitem>

            <listitem><para><code>setMultiOptions(array $options)</code> (überschreibt existierende
                Optionen)</para></listitem>

            <listitem><para><code>getMultiOption($option)</code></para></listitem>

            <listitem><para><code>getMultiOptions()</code></para></listitem>

            <listitem><para><code>removeMultiOption($option)</code></para></listitem>

            <listitem><para><code>clearMultiOptions()</code></para></listitem>
        </itemizedlist>

        <para>
            Um gecheckte Elemente zu markieren, muß ein Array an Werte an <code>setValue()</code> übergeben
            werden. Der folgende Code prüft die Werte "bar" und "bat":
        </para>

        <programlisting role="php"><![CDATA[
$element = new Zend_Form_Element_MultiCheckbox('foo', array(
    'multiOptions' => array(
        'foo' => 'Foo Option',
        'bar' => 'Bar Option',
        'baz' => 'Baz Option',
        'bat' => 'Bat Option',
    );
));

$element->setValue(array('bar', 'bat'));
]]></programlisting>

        <para>
            Beachte das man auch für das Setzen eines einzelnen Wertes ein Array übergeben muß.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.multiselect">
        <title>Zend_Form_Element_Multiselect</title>

        <para>
            XHTML <code>select</code> Elemente erlaube ein 'multiple' Attribut, das zeigt das
            mehrere Optionen für die Übermittlung ausgewählt werden können, statt normalerweise
            nur eines. <classname>Zend_Form_Element_Multiselect</classname> erweitert
            <link linkend="zend.form.standardElements.select">Zend_Form_Element_Select</link> und
            setzt das <code>multiple</code> Attribut auf 'multiple'. Wie andere Klassen die von der
            Basisklasse <classname>Zend_Form_Element_Multi</classname> abgeleitet werden, können die Optionen
            für die Auswahl wie folgt verändert werden:
        </para>

        <itemizedlist>
            <listitem><para><code>addMultiOption($option, $value)</code></para></listitem>

            <listitem><para><code>addMultiOptions(array $options)</code></para></listitem>

            <listitem><para><code>setMultiOptions(array $options)</code>
                    (überschreibt existierende Optionen)</para></listitem>

            <listitem><para><code>getMultiOption($option)</code></para></listitem>

            <listitem><para><code>getMultiOptions()</code></para></listitem>

            <listitem><para><code>removeMultiOption($option)</code></para></listitem>

            <listitem><para><code>clearMultiOptions()</code></para></listitem>
        </itemizedlist>

        <para>
            Wenn ein Übersetzungs Adapter in der Form und/oder dem Element registriert ist,
            werden Optionswerte für Darstellungzwecke übersetzt.
        </para>

        <para>
            Standardmäßig registriert dieses Element die <code>InArray</code> Prüfung welche gegen
            Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann deaktiviert werden
            indem entweder <code>setRegisterInArrayValidator(false)</code> aufgerufen, oder indem
            ein false Wert an den <code>registerInArrayValidator</code> Konfigurationsschlüssel übergeben
            wird.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.password">
        <title>Zend_Form_Element_Password</title>

        <para>
            Passwort Element sind grundsätzlich normale Textelemente -- ausser das typischerweise
            das eingegebene Passwort nicht in Fehlermeldungen oder dem Element selbst angezeigt
            werden soll wenn die Form normals angezeigt wird.
        </para>

        <para>
            <classname>Zend_Form_Element_Password</classname> ermöglicht das durch den Aufruf von
            <code>setObscureValue(true)</code> auf jeder Prüfung (und stellt sicher das das
            Passwort in der Prüfungs Fehlermeldung verschleiert wird), und verwendet den
            'formPassword' View Helfer (welcher den an Ihn übergebenen Wert nicht anzeigt).
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.radio">
        <title>Zend_Form_Element_Radio</title>

        <para>
            Radio Elemente erlauben es verschiedene Optionen zu spezifizieren, von denen ein
            einzelner Wert zurückgegeben wird. <classname>Zend_Form_Element_Radio</classname> erweitert die
            Basisklasse <classname>Zend_Form_Element_Multi</classname> und erlaubt es eine Anzahl von
            Optionen zu spezifizieren, und verwendet dann den <code>formRadio</code> View Helfer
            um diese darzustellen.
        </para>

        <para>
            Standardmäßig registriert dieses Element die <code>InArray</code> Prüfung welche gegen
            Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann deaktiviert werden
            indem entweder <code>setRegisterInArrayValidator(false)</code> aufgerufen, oder indem
            ein false Wert an den <code>registerInArrayValidator</code> Konfigurationsschlüssel übergeben
            wird.
        </para>

        <para>
            Wie alle Elemente die die Basisklasse des Mutli Elements erweitern, können die
            folgenden Methode verwendet werden um die Radio Optionen zu manipulieren die angezeigt
            werden:
        </para>

        <itemizedlist>
            <listitem><para><code>addMultiOption($option, $value)</code></para></listitem>

            <listitem><para><code>addMultiOptions(array $options)</code></para></listitem>

            <listitem><para><code>setMultiOptions(array $options)</code>
                    (überschreibt existierende Optionen)</para></listitem>

            <listitem><para><code>getMultiOption($option)</code></para></listitem>

            <listitem><para><code>getMultiOptions()</code></para></listitem>

            <listitem><para><code>removeMultiOption($option)</code></para></listitem>

            <listitem><para><code>clearMultiOptions()</code></para></listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.form.standardElements.reset">
        <title>Zend_Form_Element_Reset</title>

        <para>
            Reset Buttons werden typischerweise verwendet um eine Form zu löschen, und sind nicht
            Teil der übermittelten Daten. Da Sie trotzdem einen Zweck in der Anzeige bieten, sind
            Sie in den Standardelementen enthalten.
        </para>

        <para>
            <classname>Zend_Form_Element_Reset</classname> erweitert
            <link linkend="zend.form.standardElements.submit">Zend_Form_Element_Submit</link>.
            Deswegen wird das Label für die Anzeige des Buttons verwendet und wird übersetzt
            wenn ein Übersetzungs Adapter vorhanden ist. Es verwendet nur die 'ViewHelper' und
            'DtDdWrapper' Dekoratore, da es nie Fehlermeldungen für solche Elemente geben sollte,
            noch sollte ein Label notwendig sein.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.select">
        <title>Zend_Form_Element_Select</title>

        <para>
            Auswahlboxen sind der übliche Weg um spezielle Auswahlen für gegebene Formdaten zu
            begrenzen. <classname>Zend_Form_Element_Select</classname> erlaubt es diese schnell und
            einfach zu erzeugen.
        </para>

        <para>
            Standardmäßig registriert dieses Element die <code>InArray</code> Prüfung welche gegen
            Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann deaktiviert werden
            indem entweder <code>setRegisterInArrayValidator(false)</code> aufgerufen, oder indem
            ein false Wert an den <code>registerInArrayValidator</code> Konfigurationsschlüssel übergeben
            wird.
        </para>

        <para>
            Da es das Basis Multielement erweitert, können die folgenden Methoden verwendet werden
            um die Auswahloptionen zu manipulieren:
        </para>

        <itemizedlist>
            <listitem><para><code>addMultiOption($option, $value)</code></para></listitem>

            <listitem><para><code>addMultiOptions(array $options)</code></para></listitem>

            <listitem><para><code>setMultiOptions(array $options)</code>
                    (überschreibt existierende Optionen)</para></listitem>

            <listitem><para><code>getMultiOption($option)</code></para></listitem>

            <listitem><para><code>getMultiOptions()</code></para></listitem>

            <listitem><para><code>removeMultiOption($option)</code></para></listitem>

            <listitem><para><code>clearMultiOptions()</code></para></listitem>
        </itemizedlist>

        <para>
            <classname>Zend_Form_Element_Select</classname> verwendet den 'formSelect' View Helfer für
            die Dekoration.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.submit">
        <title>Zend_Form_Element_Submit</title>

        <para>
            Sendebuttons (Submit) werden verwendet um eine Form zu senden. Es kann gewünscht sein
            mehrere Sendebuttons zu verwendetn; die Buttons zur Übermittlung der Form können
            verwendet werden um auszuwählen welche Aktion mit den übermittelten Daten genommen
            werden soll. <classname>Zend_Form_Element_Submit</classname> macht die Entscheidung einfach,
            durch das Hinzufügen einer <code>isChecked()</code> Methode; da nur ein Button Element
            von der Form übermittelt wird, nachdem die Form übermittelt oder geprüft wurde, kann
            diese Methode auf jedem Sendebutton ausgerufen werden um festzustellen welcher
            verwendet wurde.
        </para>

        <para>
            <classname>Zend_Form_Element_Submit</classname> verwendet das Label als den "Wert" des
            Sendebuttons, und übersetzt es wenn ein Übersetzungsadapter vorhanden ist.
            <code>isChecked()</code> prüft den übermittelten Wert gegen das Label um festzustellen
            ob der Button verwendet wurde.
        </para>

        <para>
            Die <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper</link> und
            <link linkend="zend.form.standardDecorators.dtDdWrapper">DtDdWrapper</link> Dekoratore
            werden verwendet um das Element darzustellen. Es wird kein Labeldekorator verwendet, da
            das Label des Buttons verwendet wird wenn das Element dargestellt wird; typischerweise
            werden acuh keine Fehler mit einem Sendeelement assoziiert.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.text">
        <title>Zend_Form_Element_Text</title>

        <para>
            Der nützlichste Typ von Form Element ist das Text Element, das begrenzte Texteinträge
            erlaubt; es ist ein ideales Element für die meisten Dateneinträge.
            <classname>Zend_Form_Element_Text</classname> verwendet einfach den 'formText' View Helfer um das
            Element darzustellen.
        </para>
    </sect2>

    <sect2 id="zend.form.standardElements.textarea">
        <title>Zend_Form_Element_Textarea</title>

        <para>
            Textbereiche werden verwendet wenn große Mengen von Text erwartet werden, und keine
            Begrenzung in der Anzahl des übermittelten Textes vorhanden sind (anders als das Limit
            der Maximalgröße wie vom Server von PHP diktiert).
            <classname>Zend_Form_Element_Textarea</classname> verwendet den 'textArea' View Helfer um solche
            Element darzustellen, und platziert den Wert als Inhalt des Elements.
        </para>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 tw=80 et:
-->
