File: Zend_Controller-QuickStart.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 (344 lines) | stat: -rw-r--r-- 14,773 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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.controller.quickstart">
    <title>Zend_Controller - Démarrage rapide</title>

    <sect2 id="zend.controller.quickstart.introduction">
        <title>Introduction</title>

        <para>
            <classname>Zend_Controller</classname> est le coeur du système <acronym>MVC</acronym> de Zend
            Framework. <acronym>MVC</acronym> équivaut à
            <ulink url="http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur">
            Modèle-Vue-Contrôleur</ulink>et est un motif de conception ("design pattern") visant à
            séparer la logique d'application de la logique d'affichage.
            <classname>Zend_Controller_Front</classname> implémente un modèle de
            <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">contrôleur
            frontal ("Front Controller")</ulink>, dans lequel toutes les demandes sont arrêtées par
            le contrôleur frontal et distribuées vers différents contrôleurs d'action ("Action
            Controller") basés sur l'URL demandé.
        </para>

        <para>
            Le système <classname>Zend_Controller</classname> a été construit dans un souci
            d'extensibilité, soit par sous-classement des classes existantes, en écrivant les
            nouvelles classes qui implémentent les diverses interfaces et les classes abstraites
            qui forment la base de la famille de contrôleur des classes, soit par écriture de
            plugins ou d'aides d'action afin d'utiliser ou d'augmenter les fonctionnalités du
            système.
        </para>
    </sect2>

    <sect2 id="zend.controller.quickstart.go">
        <title>Démarrage rapide</title>

        <para>
            Si vous avez besoin d'informations plus détaillées, lisez les sections suivantes.
            Si vous voulez juste démarrer rapidement, lisez ce qui suit.
        </para>

        <sect3 id="zend.controller.quickstart.go.directory">
            <title>Créer votre disposition de système de fichiers</title>

            <para>
                La première étape est de créer votre disposition de système de fichiers. La
                disposition typique est la suivante&#160;:
            </para>

            <programlisting language="php"><![CDATA[
application/
    controllers/
        IndexController.php
    models/
    views/
        scripts/
            index/
                index.phtml
        helpers/
        filters/
html/
    .htaccess
    index.php
]]></programlisting>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.docroot">
            <title>Régler votre document root</title>

            <para>
                Dans votre serveur Web, faîtes pointer votre "document root" vers le dossier
                <code>html</code> du système de fichiers ci-dessus.
            </para>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.rewrite">
            <title>Créer vos règles de réécriture</title>

            <para>Éditez le fichier <code>html/.htaccess</code> afin de lire ceci&#160;:</para>

            <programlisting language="php"><![CDATA[
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
]]></programlisting>

            <note>
                <title>Connaître mod_rewrite</title>

                <para>
                    Les règles de réécriture ci-dessus autorisent l'accès à tous fichiers sous la
                    racine de votre hôte virtuel. Si vous avez des fichiers que vous ne souhaitez
                    pas exposer, vous pouvez souhaiter restreindre ces règles. Allez sur le site
                    d'Apache <ulink
                        url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">pour en
                        apprendre davantage concernant mod_rewrite</ulink>.
                </para>
            </note>

            <para>
                Si vous avez <acronym>IIS</acronym> 7.0, utilisez ceci pour votre configuration de réécriture&#160;:
            </para>

            <programlisting language="xml"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <system.webServer>
         <rewrite>
             <rules>
                 <rule name="Imported Rule 1" stopProcessing="true">
                     <match url="^.*$" />
                     <conditions logicalGrouping="MatchAny">
                         <add input="{REQUEST_FILENAME}"
                             matchType="IsFile" pattern=""
                             ignoreCase="false" />
                         <add input="{REQUEST_FILENAME}"
                             matchType="IsDirectory"
                             pattern="" ignoreCase="false" />
                     </conditions>
                     <action type="None" />
                 </rule>
                 <rule name="Imported Rule 2" stopProcessing="true">
                     <match url="^.*$" />
                     <action type="Rewrite" url="index.php" />
                 </rule>
             </rules>
         </rewrite>
     </system.webServer>
</configuration>
]]></programlisting>

            <para>
                Les règles ci-dessus vont redirigées toute requête vers des ressources
                existantes (liens symboliques, fichiers non vides, ou répertoires non-vides), tout
                autre requête sera renvoyée vers le contrôleur frontal.
            </para>

            <note>
                <para>
                    Les règles de réécriture ci-dessus sont pour Apache ; pour des exemples
                    de règles de réécriture pour d'autres serveurs Web, reportez-vous à la
                    <link linkend="zend.controller.router.introduction">documentation du
                    routeur</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.bootstrap">
            <title>Créer votre fichier d'amorçage (bootstrap)</title>

            <para>
                Le fichier d'amorçage est la page vers laquelle toutes les demandes sont
                dirigées -- <code>html/index.php</code> dans ce cas-ci. Ouvrez
                <code>html/index.php</code> dans l'éditeur de votre choix et ajouter ce qui
                suit&#160;:
            </para>

            <programlisting language="php"><![CDATA[
Zend_Controller_Front::run('/chemin/vers/application/controllers');
]]></programlisting>

            <para>
                Ceci va instancier et distribuer le contrôleur frontal, qui conduira les
                demandes vers les contrôleurs d'action.
            </para>

        </sect3>

        <sect3 id="zend.controller.quickstart.go.controller">
            <title>Créer votre contrôleur d'action par défaut</title>

            <para>
                Avant de discuter des contrôleurs d'action, vous devez d'abord comprendre
                comment les requêtes sont dirigées dans Zend Framework. Par défaut, le premier
                segment d'un chemin d'URL correspond à un contrôleur, et le second à une action.
                Par exemple, l'URL est <code>http://framework.zend.com/roadmap/components</code>,
                le chemin est <code>/roadmap/components</code>, qui correspondra au contrôleur
                <code>roadmap</code> et à l'action <code>components</code>. Si aucune action n'est
                fournie, l'action <code>index</code> est présumé, et si aucun contrôleur n'est
                fourni, le contrôleur <code>index</code> est présumé (suivant la convention Apache
                qui fait correspondre un <code>DirectoryIndex</code> automatiquement).
            </para>

            <para>
                Le distributeur du <classname>Zend_Controller</classname> prend alors la
                valeur du contrôleur et le fait correspondre à une classe. Par défaut, il s'agit du
                nom du contrôleur suivi du mot <code>Controller</code>. Ainsi, dans notre exemple
                ci-dessus, le contrôleur <code>roadmap</code> correspond à la classe
                <code>RoadmapController</code>.
            </para>

            <para>
                De la même manière, la valeur de l'action correspond à une méthode de la
                classe contrôleur. Par défaut, la valeur est écrit en minuscule, et le mot
                <code>Action</code> est ajouté. Ainsi, dans notre exemple ci-dessus, l'action
                <code>components</code> devient <code>componentsAction</code>, et la méthode finale
                appelée est <methodname>RoadmapController::componentsAction()</methodname>.
            </para>

            <para>
                Créons maintenant un contrôleur d'action par défaut et une méthode d'action.
                Comme noté auparavant, le contrôleur et l'action par défaut sont tous les deux
                nommées <code>index</code>. Ouvrez le fichier
                <code>application/controllers/IndexController.php</code>, et entrez ce qui suit
                :
            </para>

            <programlisting language="php"><![CDATA[
/** Zend_Controller_Action */

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $this->render();
    }
}
]]></programlisting>

            <para>
                Par défaut, l'aide d'action
                <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>est
                activé. Ceci signifie qu'en définissant simplement une méthode d'action et un
                script de vue correspondant, vous obtiendrez automatiquement le rendu du contenu.
                Par défaut, <classname>Zend_View</classname> est utilisé en tant que couche Vue
                dans le <acronym>MVC</acronym>. Le <code>ViewRenderer</code> utilise le nom du contrôleur (par
                exemple, <code>index</code>) et le nom de l'action courante (par exemple,
                <code>index</code>) pour déterminer le modèle à afficher. Par défaut, le fichier
                modèle se termine par l'extension <code>.phtml</code>, cela signifie que dans
                l'exemple ci-dessus, le modèle <code>index/index.phtml</code> sera rendu. De plus,
                le <code>ViewRenderer</code> suppose automatiquement que le dossier
                <code>views</code> situé au même niveau que le dossier des contrôleurs est le
                dossier de base des vues, et que les scripts de vues sont dans le sous-dossier
                <code>views/scripts/</code>. Ainsi le modèle rendu sera trouvé dans
                <code>application/views/scripts/index/index.phtml</code>.
            </para>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.view">
            <title>Créer votre script de vue</title>

            <para>
                Comme mentionné
                <link linkend="zend.controller.quickstart.go.controller">dans la section
                précédente</link>, les scripts de vue sont dans
                <code>application/views/scripts/</code> ; le script de vue pour le contrôleur et
                l'action par défaut est donc
                <code>application/views/scripts/index/index.phtml</code>. Créer ce fichier, et
                saisissez ce HTML :
            </para>

            <programlisting language="php"><![CDATA[
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>My first Zend Framework App</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>
]]></programlisting>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.errorhandler">
            <title>Créer votre contrôleur d'erreur</title>

            <para>
                Par défaut,
                <link linkend="zend.controller.plugins.standard.errorhandler">le plugin de gestion
                des erreurs</link>est enregistré. Ce plugin nécessite qu'un contrôleur existe pour
                gérer les erreurs. Par défaut, il s'agit d'un <code>ErrorController</code> dans le
                module par défaut avec une méthode <code>errorAction</code> :
            </para>

            <programlisting language="php"><![CDATA[
/** Zend_Controller_Action */

class ErrorController extends Zend_Controller_Action
{
    public function errorAction()
    {
    }
}
]]></programlisting>

            <para>
                En considérant l'architecture des dossiers vu ci-dessus, le fichier sera dans
                <code>application/controllers/ErrorController.php</code>. Vous devez aussi créer
                une script de vue dans <code>application/views/scripts/error/error.phtml</code> ;
                exemple de contenu possible :
            </para>

            <programlisting language="php"><![CDATA[
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Erreur</title>
</head>
<body>
    <h1>Erreur apparue</h1>
    <p>Une erreur est apparue ; veuillez rééssayer plus tard.</p>
</body>
</html>
]]></programlisting>
        </sect3>

        <sect3 id="zend.controller.quickstart.go.finish">
            <title>Voir le site !</title>

            <para>
                Avec votre premier contrôleur et votre première vue, vous pouvez maintenant
                démarrer votre navigateur et aller sur votre site. En supposant que
                <code>exemple.fr</code> est votre domaine, chacun des <acronym>URL</acronym>s suivants vous dirigera
                vers la page que nous avons tout juste créée :
            </para>

            <itemizedlist>
                <listitem>
                    <para><code>http://exemple.fr/</code></para>
                </listitem>
                <listitem>
                    <para><code>http://exemple.fr/index</code></para>
                </listitem>
                <listitem>
                    <para><code>http://exemple.fr/index/index</code></para>
                </listitem>
            </itemizedlist>

            <para>
                Vous êtes maintenant prêt à créer de nouveaux contrôleurs et de nouvelles
                méthodes d'action. Félicitations !
            </para>
        </sect3>
    </sect2>
</sect1>