Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<com:TContent ID="Main">
2
 
3
<h1>Création de la page Contact</h1>
4
 
5
<p>
6
Nous avons créé une page par défaut <tt>Home.page</tt> en utilisant les <a href="http://www.pradosoft.com/demos/quickstart/?page=GettingStarted.CommandLine">outils en ligne de commande de PRADO</a>. Cette page est relativement statique parce qu'elle ne contient que du contenu HTML. Dans cette session, nous allons créer une page dynamique dénommée <tt>Contact</tt>.
7
</p>
8
 
9
<p>
10
Le but de cette page est de collecter les retours d'informations des utilisateurs Web concernant notre outil de blog. Pour atteindre ce but, nous envisageons d'utiliser un formulaire qui sera à remplir. Dans ce formulaire, nous demanderons le nom de l'utilisateur, son adresse email et son commentaire. Après que le formulaire ai été rempli et envoyé, un email avec le commentaire sera envoyé à l'administrateur.
11
</p>
12
 
13
<p>
14
Pour créer la page <tt>Contact</tt>, nous avons besoin de 2 fichiers dans le dossier <tt>pages</tt> : le fichier de gabarit <tt>Contact.page</tt> et le fichier de classe PHP <tt>Contact.PHP</tt>.
15
</p>
16
 
17
<img src="<%~ directories2.gif %>" class="output" />
18
 
19
<com:InfoBox>
20
Une <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Pages">page</a> doit avoir un fichier de <a href="http://www.pradosoft.com/demos/quickstart/?page=Configurations.Templates1">gabarit</a> (extension <tt>.page</tt>) ou un fichier de classe PHP, ou les deux :
21
</p>
22
 
23
<ul>
24
<li>Une page avec seulement un gabarit est généralement une page statique, comme la page d'accueil que nous avons déjà créée ;</li>
25
<li>Une page avec seulement un fichier de classe PHP produit le code HTML directement à partir de l'exécution du script.
26
<li>Une page avec un gabarit et un fichier de classe PHP combine les avantages des deux : un gabarit pour facilement organiser la présentation de la page et un fichier de classe PHP pour produire le contenu dynamique.</li>
27
</ul>
28
</com:InfoBox>
29
 
30
 
31
<h2>Création de la page gabarit</h2>
32
 
33
<p>
34
Nous allons premièrement créer le fichier gabarit de la page <tt>Contact</tt>.
35
</p>
36
 
37
<p>
38
Nous utilisons un fichier gabarit pour organiser la présentation de notre formulaire. Dans notre gabarit, nous utilisons des <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.TextBox">champs de saisie</a> pour collecter le nom de l'utilisateur, son email et son commentaire. D'autre part, nous utilisons des <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.Validation">validateurs</a> pour nous assurer que l'utilisateur a bien fourni les éléments avant d'envoyer le formulaire. Le contenu complet du gabarit est le suivant,
39
</p>
40
 
41
<com:TTextHighlighter CssClass="source" Language="prado">
42
<html>
43
<head><title>Mon Blog - Contact</title></head>
44
<body>
45
<h1>Contact</h1>
46
<p>Veuillez remplir le formulaire suivant pour me laisser vos impressions au sujet de mon blog. Merci !</p>
47
 
48
&lt;com:TForm>
49
 
50
<span>Votre nom:</span>
51
&lt;com:TRequiredFieldValidator ControlToValidate="Name"
52
    ErrorMessage="Veuillez indiquer votre nom."
53
    Display="Dynamic" />
54
<br/>
55
&lt;com:TTextBox ID="Name" />
56
 
57
<br/>
58
<span>Votre email:</span>
59
&lt;com:TRequiredFieldValidator ControlToValidate="Email"
60
    ErrorMessage="Veuillez indiquer votre email."
61
    Display="Dynamic" />
62
&lt;com:TEmailAddressValidator ControlToValidate="Email"
63
    ErrorMessage="Vous avez saisi un email invalide."
64
    Display="Dynamic" />
65
<br/>
66
&lt;com:TTextBox ID="Email" />
67
 
68
<br/>
69
<span>Commentaires:</span>
70
&lt;com:TRequiredFieldValidator ControlToValidate="Feedback"
71
    ErrorMessage="Veuillez saisir un commentaire."
72
    Display="Dynamic" />
73
<br/>
74
&lt;com:TTextBox ID="Feedback"
75
    TextMode="MultiLine"
76
    Rows="10"
77
    Columns="40" />
78
 
79
<br/>
80
&lt;com:TButton Text="Envoyer" OnClick="submitButtonClicked" />
81
 
82
&lt;/com:TForm>
83
 
84
</body>
85
</html>
86
</com:TTextHighlighter>
87
 
88
<p>
89
Comme vous pouvez le voir, un fichier gabarit ressemble énormément à un fichier HTML classique. La principale différence concerne le fichier gabarit qui contient quelques balises <tt>&lt;com:&gt;</tt>. Chaque balise <tt>&lt;com:&gt;</tt> fait référence à un <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Controls">contrôle</a> dont les propriétés sont initialisées grâce aux paires nom-valeur de la balise. Par exemple, la balise <tt>&lt;com:TButton&gt;</tt> fait référence au contrôle <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.Button">TButton</a> qui affiche un bouton permettant à l'utilisateur de soumettre le formulaire. Pour une syntaxe complète, veuillez vous référer au <a href="http://www.pradosoft.com/demos/quickstart/?page=Configurations.Templates1">Tutoriel de démarrage rapide</a>.
90
 
91
<com:InfoBox>
92
PRADO fournit un contrôle pour chaque type de balise HTML. Par exemple, <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.TextBox">TTextBox</a> affiche un champ de saisie, <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.List">TDropDownList</a> affiche une liste déroulante. Chaque contrôle est un composant auquel on peut accéder par code et dont les propriétés sont modifiables.
93
</com:InfoBox>
94
 
95
 
96
<p>
97
Avant le contrôle <tt>TTextBox</tt>, le gabarit utilise aussi plusieurs validateurs qui permettent de s'assurer que les données saisies sont bien conformes à notre attente. Par exemple, pour nous assurer que l'adresse email est valide, nous utilisons les deux validateurs suivants,
98
</p>
99
 
100
<com:TTextHighlighter CssClass="source" Language="prado">
101
<span>Your Email:</span>
102
&lt;com:TRequiredFieldValidator
103
    ControlToValidate="Email"
104
    ErrorMessage="Veuillez indiquer votre email."
105
    Display="Dynamic" />
106
&lt;com:TEmailAddressValidator
107
    ControlToValidate="Email"
108
    ErrorMessage="Vous avez saisi un email invalide."
109
    Display="Dynamic" />
110
<br/>
111
&lt;com:TTextBox ID="Email" />
112
<br/>
113
</com:TTextHighlighter>
114
 
115
<p>
116
Ci-dessous, un résumé des contrôles utilisés dans le gabarit :
117
</p>
118
 
119
<ul>
120
<li><a href="http://www.pradosoft.com/docs/classdoc/TForm">TForm</a> affiche un formulaire HTML. Chaque contrôle de saisie doit être au sein d'un TForm. Et le plus important, au plus un <tt>TForm</tt> peut apparaitre dans une page.</li>
121
<li><a href="http://www.pradosoft.com/docs/classdoc/TTextBox">TTextBox</a> affiche un champ de saisie utilisateur.</li>
122
<li><a href="http://www.pradosoft.com/docs/classdoc/TRequiredFieldValidator">TRequiredFieldValidator</a> s'assure que le contrôle de saisie associé n'est pas vide quand le formulaire est envoyé.</li>
123
<li><a href="http://www.pradosoft.com/docs/classdoc/TEmailAddressValidator">TEmailAddressValidator</a> s'assure que le champ de saisie contient une adresse email <i>valide</i> quand le formulaire est envoyé.</li>
124
</ul>
125
 
126
<com:TipBox>
127
Ecrire des gabarits seulement avec un éditeur de texte peut être pénible et pas vraiment intuitif pour les designers. Pour faciliter ceci, PRADO inclus dans cette version, une extension pour Dreamweaver qui permet la complétion automatique des balises PRADO (ceci inclut le nom des balises, le nom des propriétés, le nom des évènements, etc.).
128
</com:TipBox>
129
 
130
<h2>Création du fichier de classe PHP</h2>
131
 
132
<p>
133
Nous allons maintenant créer le fichier de classe PHP <tt>Contact.PHP</tt>. Ce fichier est nécessaire parce que nous devons agir après la soumission du formulaire.
134
</p>
135
 
136
<p>
137
Notez les lignes dans le fichier gabarit. Elles indiquent que lorsque l'utilisateur soumet le formulaire, la méthode <tt>submitButtonClicked()</tt> doit être appelé. Ici, <tt>OnClick</tt> est le nom de l'évènement et la méthode correspondante doit être défini dans le fichier de classe PHP.
138
</p>
139
 
140
<com:TTextHighlighter CssClass="source" Language="prado">
141
  &lt;com:TButton Text="Submit" OnClick="submitButtonClicked" />
142
</com:TTextHighlighter>
143
 
144
<p>
145
Nous écrirons donc le fichier de classe suivant :
146
</p>
147
 
148
<com:TTextHighlighter CssClass="source">
149
<?PHP
150
class Contact extends TPage
151
{
152
    /**
153
     * Gestionnaire d'évènement pour OnClick (bouton submit).
154
     * @param TButton le bouton qui a générer l'évènement
155
     * @param TEventParameter les paramètres de l'évènement (null dans ce cas)
156
     */
157
    public function submitButtonClicked($sender, $param)
158
    {
159
        if ($this->IsValid)  // vérifie que les validations sont Ok
160
        {
161
            // récupère le nom de l'utilisateur, son email et son commentaire
162
            $name = $this->Name->Text;
163
            $email = $this->Email->Text;
164
            $feedback = $this->Feedback->Text;
165
 
166
            // envoie un email à l'administrateur avec les informations
167
            $this->mailFeedback($name, $email, $feedback);
168
        }
169
    }
170
 
171
    protected function mailFeedback($name, $email, $feedback)
172
    {
173
        // implémentation de l'envoi de l'email
174
    }
175
}
176
?>
177
</com:TTextHighlighter>
178
 
179
<p>
180
Le code précédent est largement explicite. En fait, nous avons juste montré le principe d'un gestionnaire d'évènement. Dans le gestionnaire d'évènement <tt>submitButtonClicked()</tt>, nous récupérons les éléments saisies par l'utilisateur. Par exemple, <tt>$this->Name->Text</tt> retourne la valeur de la propriété <tt>Text</tt> du contrôle <tt>Name</tt> qui est un contrôle permettant la saisie du nom de l'utilisateur.
181
</p>
182
 
183
<com:InfoBox>
184
Le nom de la classe héritant de TPage doit être le même que le nom du fichier. C'est aussi une nécessité pour écrire n'importe quelle classe de composant PRADO.
185
</com:InfoBox>
186
 
187
<h2>Test</h2>
188
 
189
<p>
190
Notre nouvelle page <tt>Contact</tt> peut être testée en naviguant à l'URL <tt>http://hostname/blog/index.PHP?page=Contact</tt>. Si vous cliquez sur le bouton "envoyer" sans avoir saisi de données, vous verrez apparaitre des messages d'erreurs à côté des champs de saisie. Si vous entrez toutes les informations nécessaires, la méthode <tt>mailFeedback()</tt> sera appelée.
191
</p>
192
 
193
<img src="<%~ output.gif %>" class="output" />
194
 
195
<p>
196
Une amélioration possible à notre page serait d'afficher un message de confirmation après que l'utilisateur ai envoyé le formulaire. Il serait aussi envisageable de rediriger le navigateur vers une adresse différente si toutes les informations ont été saisies correctement. Nous laisserons aux lecteurs la mise en place de ces fonctionnalités.
197
</p>
198
 
199
<com:InfoBox>
200
Chaque validateur représente une règle de validation. Un champ de saisie unique peut être associé à un ou plusieurs validateurs. Les validateurs effectuent les vérifications aussi bien du côté client que du côté serveur. Côté client (navigateur), les validations sont effectuées grâce à du javascript, côté serveur, elles sont effectuées en PHP. Les validations côté client peuvent être désactivées tandis que celles côté serveur ne peuvent l'être. Ceci permet de s'assurer que les règles de validation sont toujours appliquées.
201
</com:InfoBox>
202
 
203
</com:TContent>