| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 21996 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.form.standardElements">
- <title>Standard Form Elemente die mit dem Zend Framework ausgeliefert werden</title>
- <para>
- Zend Framework wird mit konkreten Element Klassen ausgeliefert welche die meisten
- <acronym>HTML</acronym> 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 <acronym>HTML</acronym> 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>
- </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 zu erlauben, 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 language="php"><![CDATA[
- $element->addPrefixPath('My_Captcha', 'My/Captcha/', 'captcha');
- ]]></programlisting>
- <para>
- Captcha's können dann durch Verwendung der <methodname>setCaptcha()</methodname> Methode
- registriert werden, welche entweder eine konkrete CAPTCHA Instanz, oder den Kurznamen
- des CAPTCHA Adapters nimmt:
- </para>
- <programlisting language="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 language="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
- <methodname>getDecorator()</methodname> 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>
- <acronym>HTML</acronym> 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 <methodname>setCheckedValue()</methodname> und
- <methodname>setUncheckedValue()</methodname> 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 <property>checked</property> Eigenschaft der
- Checkbox. Das kann abgefragt werden indem <methodname>isChecked()</methodname> verwendet
- wird oder einfach auf die Eigenschaft zugegriffen wird. Das Verwenden der
- <methodname>setChecked($flag)</methodname> 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 <classname>FormFile</classname> Viewhelfer sowie den
- <classname>File</classname> Decorator um das Formularelement anzuzeigen.
- </para>
- <para>
- Standardmäßig verwendet es den <classname>Http</classname> Transferadapter, welcher das
- <varname>$_FILES</varname> 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 language="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 language="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 <methodname>receive()</methodname>
- verwendet wird. Zusätzlich kann man das endgültige Ziel ermittelt werden indem
- <methodname>getFileName()</methodname> verwendet wird:
- </para>
- <programlisting language="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 <acronym>HTTP</acronym> hat das File Element keinen Wert. Aus diesem Grund, und
- aus Gründen der Sicherheit erhält gibt <methodname>getValue()</methodname> nur den
- Dateinamen der hochgeladenen Datei zurück und nicht den kompletten Pfad. Wenn man
- die kompletten Informationen benötigt kann <methodname>getFileName()</methodname>
- 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
- <methodname>getValues()</methodname> auf dem Formular aufruft. Der Grund hinter diesem
- Verhalten ist, das die Datei selbst der Wert des File Elements ist.
- </para>
- <programlisting language="php"><![CDATA[
- $form->getValues();
- ]]></programlisting>
- <note>
- <para>
- Deshalb hat ein weiterer Aufruf von <methodname>receive()</methodname> nach dem
- Aufruf von <methodname>getValues()</methodname> 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 <methodname>getValues()</methodname> aufzurufen
- ohne das die Datei empfangen wird. Man kann dies erreichen indem
- <methodname>setValueDisabled(true)</methodname> aufgerufen wird. Um den aktuellen Wert
- dieses Flags zu erhalten kann man <methodname>isValueDisabled()</methodname> aufrufen.
- </para>
- <example id="zend.form.standardElements.file.retrievement">
- <title>Datei explizit empfangen</title>
- <para>
- Zuerst <methodname>setValueDisabled(true)</methodname> aufrufen.
- </para>
- <programlisting language="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
- <methodname>getValues()</methodname> aufruft. Man muß also
- <methodname>receive()</methodname> vom Datei Element, oder einer Instanz von
- <classname>Zend_File_Transfer</classname> selbst aufrufen.
- </para>
- <programlisting language="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>
- <methodname>isUploaded()</methodname>: Prüft ob das Dateielement hochgeladen
- wurde oder nicht.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>isReceived()</methodname>: Prüft ob das Dateielement bereits
- empfangen wurde.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>isFiltered()</methodname>: 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 language="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 <methodname>setMultiFile($count)</methodname> 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 <methodname>setMultiFile()</methodname> aufrufen
- nachdem das Element erstellt wurde:
- </para>
- <programlisting language="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 <methodname>getMultiFile()</methodname> 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>
- <para>
- Zusätzlich werden File Element nicht im Unterformulat dargestellt. Wenn man also ein
- File Element in einem Unterformulat hinzufügt, wird das Element im Hauptformular
- dargestellt.
- </para>
- </note>
- <para>
- Um die Größe der Datei zu begrenzen, kann die maximale
- Dateigröße spezifiziert werden indem die <constant>MAX_FILE_SIZE</constant> Option im
- Formular gesetzt wird. Sobald der Wert, durch die Verwendung der
- <methodname>setMaxFileSize($size)</methodname> Methode, gesetzt ist, wird er mit dem
- File Element dargestellt.
- </para>
- <programlisting language="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
- <constant>MAX_FILE_SIZE</constant> nur einmal setzen. Wird es nochmals gesetzt
- überschreibt es den vorherigen Wert.
- </para>
- <para>
- Beachte, dass 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 welche 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 language="php"><![CDATA[
- $form->addElement('hash', 'no_csrf_foo', array('salt' => 'unique'));
- ]]></programlisting>
- <para>
- Das Salt kann später gesetzt werden durch Verwendung der
- <methodname>setSalt($salt)</methodname> 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 <methodname>setImage()</methodname>
- 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 <methodname>setImageValue()</methodname> verwendet wird (oder der
- 'imageValue Konfigurations Schlüssel). Wenn der Wert der für das Element gesetzt ist,
- mit <property>imageValue</property> übereinstimmt, gibt
- <methodname>isChecked()</methodname> <constant>TRUE</constant> 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 <classname>Image</classname> 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 <classname>InArray</classname> Prüfung
- welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
- deaktiviert werden indem entweder
- <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
- <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
- Konfigurationsschlüssel übergeben wird.
- </para>
- <para>
- Die verschiedenen Checkbox Optionen können mit den folgenden Methoden manipuliert
- werden:
- </para>
- <itemizedlist>
- <listitem>
- <para><methodname>addMultiOption($option, $value)</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>addMultiOptions(array $options)</methodname></para>
- </listitem>
- <listitem>
- <para>
- <methodname>setMultiOptions(array $options)</methodname> (überschreibt
- existierende Optionen)
- </para>
- </listitem>
- <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
- <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>clearMultiOptions()</methodname></para></listitem>
- </itemizedlist>
- <para>
- Um gecheckte Elemente zu markieren, muß ein Array an Werte an
- <methodname>setValue()</methodname> übergeben werden. Der folgende Code prüft die Werte
- "bar" und "bat":
- </para>
- <programlisting language="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>
- <acronym>XHTML</acronym> <emphasis>select</emphasis> 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 <property>multiple</property> 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><methodname>addMultiOption($option, $value)</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>addMultiOptions(array $options)</methodname></para>
- </listitem>
- <listitem>
- <para>
- <methodname>setMultiOptions(array $options)</methodname>
- (überschreibt existierende Optionen)
- </para>
- </listitem>
- <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
- <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>clearMultiOptions()</methodname></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 <classname>InArray</classname> Prüfung
- welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
- deaktiviert werden indem entweder
- <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
- <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
- 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
- <methodname>setObscureValue(true)</methodname> 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
- <emphasis>formRadio</emphasis> View Helfer um diese darzustellen.
- </para>
- <para>
- Standardmäßig registriert dieses Element die <classname>InArray</classname> Prüfung
- welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
- deaktiviert werden indem entweder
- <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
- <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
- Konfigurationsschlüssel übergeben wird.
- </para>
- <para>
- Wie alle Elemente welche die Basisklasse des Multl Elements erweitern, können die
- folgenden Methode verwendet werden um die Radio Optionen zu manipulieren die angezeigt
- werden:
- </para>
- <itemizedlist>
- <listitem>
- <para><methodname>addMultiOption($option, $value)</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>addMultiOptions(array $options)</methodname></para>
- </listitem>
- <listitem>
- <para>
- <methodname>setMultiOptions(array $options)</methodname> (überschreibt
- existierende Optionen)
- </para>
- </listitem>
- <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
- <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>clearMultiOptions()</methodname></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 <classname>InArray</classname> Prüfung
- welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
- deaktiviert werden indem entweder
- <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
- <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
- 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><methodname>addMultiOption($option, $value)</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>addMultiOptions(array $options)</methodname></para>
- </listitem>
- <listitem>
- <para>
- <methodname>setMultiOptions(array $options)</methodname>
- (überschreibt existierende Optionen)
- </para>
- </listitem>
- <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
- <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
- <listitem><para><methodname>clearMultiOptions()</methodname></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 <methodname>isChecked()</methodname> 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.
- <methodname>isChecked()</methodname> 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 <acronym>PHP</acronym> 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>
|