File: quickstart-create-form.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 (190 lines) | stat: -rw-r--r-- 6,424 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
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.quickstart.create-form">
    <title>Créer un formulaire</title>

    <para>
        Pour que notre livre d'or soit utile, nous allons avoir besoin d'un formulaire permettant de
        le remplir.
    </para>

    <para>
        Nous devons donc créer un formulaire. Pour créer un formulaire vierge, exécutez la
        commande&#160;:
    </para>

    <programlisting language="shell"><![CDATA[
% zf create form Guestbook
Creating a form at application/forms/Guestbook.php
Updating project profile '.zfproject.xml'
]]></programlisting>

    <para>
        Ceci créera le dossier <filename>application/forms/</filename> avec un fichier de classe
        <filename>Guestbook.php</filename>. Ouvrez ce fichier et mettez le à jour comme suit&#160;:
    </para>

    <programlisting language="php"><![CDATA[
// application/forms/Guestbook.php

class Application_Form_Guestbook extends Zend_Form
{
    public function init()
    {
        // La méthode HTTP d'envoi du formulaire
        $this->setMethod('post');

        // Un élément Email
        $this->addElement('text', 'email', array(
            'label'      => 'Your email address:',
            'required'   => true,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'EmailAddress',
            )
        ));

        // Un élément pour le commentaire
        $this->addElement('textarea', 'comment', array(
            'label'      => 'Please Comment:',
            'required'   => true,
            'validators' => array(
                array('validator' => 'StringLength', 'options' => array(0, 20))
                )
        ));

        // Un captcha
        $this->addElement('captcha', 'captcha', array(
            'label'      => 'Please enter the 5 letters displayed below:',
            'required'   => true,
            'captcha'    => array(
                'captcha' => 'Figlet',
                'wordLen' => 5,
                'timeout' => 300
            )
        ));

        // Un bouton d'envoi
        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Sign Guestbook',
        ));

        // Et une protection anti CSRF
        $this->addElement('hash', 'csrf', array(
            'ignore' => true,
        ));
    }
}
]]></programlisting>

    <para>
        Le formulaire ci-dessus définit cinq éléments&#160;: une adresse email, un champ
        commentaire, un <acronym>CAPTCHA</acronym> anti spam, un bouton d'envoi et une protection
        anti <acronym>CSRF</acronym>.
    </para>

    <para>
        Maintenant nous allons ajouter une action <methodname>signAction()</methodname> à notre
        <classname>GuestbookController</classname> qui va s'occuper de la soumission du formulaire.
        Pour créer cette action et son script de vue, éxécutez&#160;:
    </para>

    <programlisting language="shell"><![CDATA[
% zf create action sign Guestbook
Creating an action named sign inside controller
    at application/controllers/GuestbookController.php
Updating project profile '.zfproject.xml'
Creating a view script for the sign action method
    at application/views/scripts/guestbook/sign.phtml
Updating project profile '.zfproject.xml'
]]></programlisting>

    <para>
        Comme vous le voyez d'après l'affichage, ceci va créer une méthode
        <methodname>signAction()</methodname> dans notre contrôleur, ainsi que le script de vue
        approprié.
    </para>

    <para>
        Ajoutons de la logique dans notre action. Nous devons d'abord vérifier le type de requête
        HTTP <acronym>POST</acronym> ou <acronym>GET</acronym>&#160;; dans ce dernier cas nous
        affichons simplement le formulaire. Cependant, si nous recevons une requête
        <acronym>POST</acronym>, nous allons vouloir valider le formulaire par rapport aux données
        postées, et s'il est valide, créer une nouvelle entrée et la sauvegarder. La logique
        ressemble à ceci&#160;:
    </para>

    <programlisting language="php"><![CDATA[
// application/controllers/GuestbookController.php

class GuestbookController extends Zend_Controller_Action
{
    // indexAction() ici ...

    public function signAction()
    {
        $request = $this->getRequest();
        $form    = new Application_Form_Guestbook();

        if ($this->getRequest()->isPost()) {
            if ($form->isValid($request->getPost())) {
                $comment = new Application_Model_Guestbook($form->getValues());
                $mapper  = new Application_Model_GuestbookMapper();
                $mapper->save($comment);
                return $this->_helper->redirector('index');
            }
        }

        $this->view->form = $form;
    }
}
]]></programlisting>

    <para>
        Bien sur, nous devons aussi éditer le script de vue. Editez
        <filename>application/views/scripts/guestbook/sign.phtml</filename> avec ceci&#160;:
    </para>

    <programlisting language="php"><![CDATA[
<!-- application/views/scripts/guestbook/sign.phtml -->

Utilisez le formulaire ci-après pour signer notre livre d'or!

<?php
$this->form->setAction($this->url());
echo $this->form;
]]></programlisting>

    <note>
        <title>Améliorer le rendu visuel du formulaire</title>

        <para>
            Ce formulaire n'a pas un look terrible, peu importe&#160;: l'apparence d'un formulaire
            est entièrement personnalisable&#160;! Voyez la <link
                linkend="zend.form.decorators">section sur les décorateurs dans le guide de
                réference</link> pour plus de détails.
        </para>

        <para>
            Aussi, vous pouvez être intéréssés par <link
                linkend="learning.form.decorators.intro">notre tutoriel sur les décorateurs de
                formulaires</link>.
        </para>
    </note>

    <note>
        <title>Checkpoint</title>

        <para>
            Naviguez maintenant sur "http://localhost/guestbook/sign". Vous devriez voir ceci dans
            votre navigateur&#160;:
        </para>

        <para>
            <inlinegraphic width="421" scale="100" align="center" valign="middle"
                fileref="figures/learning.quickstart.create-form.png" format="PNG" />
        </para>
    </note>
</sect1>