File: Zend_Form-StandardElements.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (846 lines) | stat: -rw-r--r-- 37,554 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
<?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>

        <para>
            Nach der Veröffentlichung oder Prüfung einer Form, kann geprüft werden ob der gegebene
            Button geklickt wurd indem die <methodname>isChecked()</methodname> 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 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>