Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 356 lines (266 sloc) 13.062 kB
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
1 Helpers (Assistants)
2 ####################
3
4 Les Helpers (Assistants) sont des classes comme les composants, pour la couche
5 de présentation de votre application. Ils contiennent la logique de
6 présentation qui est partagée entre plusieurs vues, éléments ou layouts. Ce
7 chapitre vous montrera comment créer vos propres assistants et soulignera les
8 tâches basiques que les assistants du cœur de CakePHP peuvent vous aider à
9 accomplir.
10
11 CakePHP dispose d'un nombre de helpers qui aident à la création des vues.
12 Ils aident à la création de balises bien-formées (y compris les formulaires),
13 aident à la mise en forme du texte, les durées et les numéros, et peut même
14 accélérer la fonctionnalité Ajax. Pour plus d'informations sur les helpers
15 inclus dans CakePHP, allez voir :ref:`core-helpers`.
5606ab9 Add all the files in my repository
cake17 authored
16
17 .. _configuring-helpers:
18
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
19 Utiliser et configurer les Helpers
20 ==================================
5606ab9 Add all the files in my repository
cake17 authored
21
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
22 Vous activez les helpers (assistants) dans CakePHP, en faisant
23 "prendre conscience" à un contrôleur qu'ils existent. Chaque contrôleur a une
24 propriété :php:attr:`~Controller::$helpers`, qui liste les helpers
25 disponibles dans la vue. Pour activer un helper dans votre vue, ajoutez
26 son nom au tableau ``$helpers`` du contrôleur::
5606ab9 Add all the files in my repository
cake17 authored
27
28 <?php
29 class BakeriesController extends AppController {
30 public $helpers = array('Form', 'Html', 'Js', 'Time');
31 }
32
cc2c0bb @shama Fixing more errors in french docs
shama authored
33 L'ajout des helpers depuis les plugins utilise la :term:`syntaxe de plugin`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
34 utilisée partout ailleurs dans CakePHP::
5606ab9 Add all the files in my repository
cake17 authored
35
36 <?php
37 class BakeriesController extends AppController {
38 public $helpers = array('Blog.Comment');
39 }
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
40
41 Vous pouvez aussi ajoutez les helpers depuis une action, dans ce cas,
42 ils seront uniquement accessibles pour cette action et aucune autre dans le
43 contrôleur. Ceci économise de la puissance de calcul pour les autres actions
44 qui n'utilisent pas le helper, tout en permettant de conserver le contrôleur
45 mieux organisé::
5606ab9 Add all the files in my repository
cake17 authored
46
47 <?php
48 class BakeriesController extends AppController {
49 public function bake {
50 $this->helpers[] = 'Time';
51 }
52 public function mix {
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
53 // Le Helper Time n'est pas chargé ici et n'est par conséquent
54 pas disponible
5606ab9 Add all the files in my repository
cake17 authored
55 }
56 }
57
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
58 Si vous avez besoin d'activer un helper pour tous les contrôleurs, ajoutez
59 son nom dans le tableau ``$helpers`` du fichier
60 ``/app/Controller/AppController.php`` (à créer si pas présent). N'oubliez pas
61 d'inclure les helpers par défaut Html et Form::
5606ab9 Add all the files in my repository
cake17 authored
62
63 <?php
64 class AppController extends Controller {
65 public $helpers = array('Form', 'Html', 'Js', 'Time');
66 }
67
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
68 Vous pouvez passer des options dans les helpers. Ces options peuvent être
69 utilisées pour définir les valeurs d'attributs ou modifier le behavior du
70 helper::
5606ab9 Add all the files in my repository
cake17 authored
71
72 <?php
73 class AwesomeHelper extends AppHelper {
74 public function __construct(View $view, $settings = array()) {
75 parent::__construct($view, $settings);
76 debug($options);
77 }
78 }
79
80 class AwesomeController extends AppController {
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
81 public $helpers = array('Awesome' => array('option1' => 'valeur1'));
5606ab9 Add all the files in my repository
cake17 authored
82 }
83
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
84 Une configuration courante est d'utilisez l'option ``className``, qui vous
85 permet de créer des helpers alias dans vos vues. Cette fonctionnalité est
86 utile quand vous voulez remplacer ``$this->Html`` ou tout autre Helper de
87 référence avec une mise en oeuvre personnalisée::
5606ab9 Add all the files in my repository
cake17 authored
88
89 <?php
90 // app/Controller/PostsController.php
91 class PostsController extends AppController {
92 public $helpers = array(
93 'Html' => array(
94 'className' => 'MyHtml'
95 )
96 );
97 }
98
99 // app/View/Helper/MyHtmlHelper.php
100 App::uses('HtmlHelper', 'View/Helper');
101 class MyHtmlHelper extends HtmlHelper {
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
102 // Ajouter votre code pour écraser le HtmlHelper du coeur
5606ab9 Add all the files in my repository
cake17 authored
103 }
104
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
105 Ce qui est au-dessus ferait un *alias* de ``MyHtmlHelper`` vers ``$this->Html``
106 dans vos vues.
5606ab9 Add all the files in my repository
cake17 authored
107
108 .. note::
109
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
110 Faire un alias d'un helper remplace cette instance partout où le helper
111 est utilisé, y compris dans les autres Helpers.
5606ab9 Add all the files in my repository
cake17 authored
112
113 .. tip::
114
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
115 Faire un alias des Helpers Html ou Session pendant que vous utilisez le
116 coeur de PagesController ne fonctionnera pas. Il est préférable de copier
117 ``lib/Cake/Controller/PagesController.php`` dans le dossier
118 ``app/Controller/``.
5606ab9 Add all the files in my repository
cake17 authored
119
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
120 L'utilisation des configurations du helper vous permet de configurer de manière
121 déclarative vos helpers et de garder la logique de configuration de vos actions
122 des contrôleurs. Si vous avez des options de configuration qui ne peuvent pas
123 être inclues comme des parties de déclaration de classe, vous pouvez les définir
124 dans le callback beforeRender de votre contrôleur::
5606ab9 Add all the files in my repository
cake17 authored
125
126 <?php
127 class PostsController extends AppController {
128 public function beforeRender() {
129 parent::beforeRender();
130 $this->helpers['CustomStuff'] = $this->_getCustomStuffSettings();
131 }
132 }
133
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
134 Utiliser les Helpers
135 ====================
5606ab9 Add all the files in my repository
cake17 authored
136
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
137 Une fois que vous avez configuré les helpers que vous souhaitiez utiliser, dans
138 votre contrôleur, chaque helper est exposé en propriété publique dans la vue.
139 Par exemple, si vous utilisiez :php:class:`HtmlHelper`, vous seriez capable
140 d'y accéder en faisant ce qui suit::
5606ab9 Add all the files in my repository
cake17 authored
141
142 <?php
143 echo $this->Html->css('styles');
144
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
145 Ce qui est au-dessus appelerait la méthode ``css`` du HtmlHelper. Vous pouvez
146 accéder à n'importe quel helper chargé en utilisant ``$this->{$helperName}``.
147 Il peut venir un temps où vous aurez besoin de charger dynamiquement un helper
148 à partir d'une vue. Vous pouvez utiliser la vue du :php:class:`HelperCollection`
149 pour le faire::
5606ab9 Add all the files in my repository
cake17 authored
150
151 <?php
152 $mediaHelper = $this->Helpers->load('Media', $mediaSettings);
153
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
154 Le HelperCollection est une :doc:`collection </core-libraries/collections>` et
155 supporte l'API collection utilisée partout ailleurs dans CakePHP.
5606ab9 Add all the files in my repository
cake17 authored
156
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
157 Méthodes de Callback
158 ====================
5606ab9 Add all the files in my repository
cake17 authored
159
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
160 Les Helpers disposent de plusieurs callbacks qui vous permettent d'augmenter
161 le processus de rendu de vue. Allez voir la documentation de :ref:`helper-api`
162 et :doc:`/core-libraries/collections` pour plus d'informations.
5606ab9 Add all the files in my repository
cake17 authored
163
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
164 Créer des Helpers
165 =================
5606ab9 Add all the files in my repository
cake17 authored
166
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
167 Si un helper du coeur (ou l'un présenté sur github ou dans la Boulangerie)
168 ne correspond pas à vos besoins, les helpers sont faciles à créer.
5606ab9 Add all the files in my repository
cake17 authored
169
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
170 Mettons que nous voulions créer un assistant, qui pourrait être utilisé pour
171 produire un lien CSS, façonné spécialement selon vos besoins, à différents
172 endroits de votre application. Afin de trouver une place à votre logique dans
173 la structure d'assistant existante dans CakePHP, vous devrez créer une nouvelle
174 classe dans ``/app/View/Helper``. Appelons notre assistant LienHelper. Le
175 fichier de la classe PHP devrait ressembler à quelque chose comme ceci::
5606ab9 Add all the files in my repository
cake17 authored
176
177 <?php
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
178 /* /app/View/Helper/LienHelper.php */
5606ab9 Add all the files in my repository
cake17 authored
179 App::uses('AppHelper', 'View/Helper');
180
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
181 class LienHelper extends AppHelper {
182 public function lancerEdition($titre, $url) {
183 // La logique pour créer le lien spécialement formaté se place
184 ici...
5606ab9 Add all the files in my repository
cake17 authored
185 }
186 }
187
188 .. note::
189
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
190 Les Helpers doivent étendre soit ``AppHelper`` soit :php:class:`Helper` ou
191 implémenter tous les callbacks dans :ref:`helper-api`.
5606ab9 Add all the files in my repository
cake17 authored
192
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
193 Inclure d'autres Helpers
194 ------------------------
5606ab9 Add all the files in my repository
cake17 authored
195
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
196 Vous souhaitez peut-être utiliser quelques fonctionnalités déjà existantes dans
197 un autre helper. Pour faire cela, vous pouvez spécifier les helpers que
198 vous souhaitez utiliser avec un tableau ``$helpers``, formaté comme vous le feriez
199 dans un contrôleur::
5606ab9 Add all the files in my repository
cake17 authored
200
201 <?php
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
202 /* /app/View/Helper/LienHelper.php (Utilisant d'autres helpers) */
5606ab9 Add all the files in my repository
cake17 authored
203 App::uses('AppHelper', 'View/Helper');
204
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
205 class LienHelper extends AppHelper {
5606ab9 Add all the files in my repository
cake17 authored
206 public $helpers = array('Html');
207
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
208 public function lancerEdition($titre, $url) {
209 // Utilisation du helper HTML pour sortir une donnée formatée
5606ab9 Add all the files in my repository
cake17 authored
210
211 $link = $this->Html->link($title, $url, array('class' => 'edit'));
212
213 return '<div class="editOuter">' . $link . '</div>';
214 }
215 }
216
217
218 .. _using-helpers:
219
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
220 Utiliser votre Helper
221 ---------------------
5606ab9 Add all the files in my repository
cake17 authored
222
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
223 Une fois que vous avez créez votre helper et l'avez placé dans
224 ``/app/View/Helper/``, vous serez capable de l'inclure dans vos contrôleurs
225 en utilisant la variable spéciale :php:attr:`~Controller::$helpers`::
5606ab9 Add all the files in my repository
cake17 authored
226
227 <?php
228 class PostsController extends AppController {
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
229 public $helpers = array('Lien');
5606ab9 Add all the files in my repository
cake17 authored
230 }
231
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
232 Une fois que votre contrôleur est au courant de cette nouvelle classe, vous
233 pouvez l'utiliser dans vos vues en accédant un objet nommé après le helper::
5606ab9 Add all the files in my repository
cake17 authored
234
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
235 <!-- fait un lien en utilisant le nouveau helper -->
236 <?php echo $this->Link->lancerEdition('Changer cette recette', '/recipes/edit/5'); ?>
5606ab9 Add all the files in my repository
cake17 authored
237
238
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
239 Créer des fonctionnalités à vos Helpers
240 =======================================
5606ab9 Add all the files in my repository
cake17 authored
241
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
242 Tous les helpers étendent une classe spéciale, AppHelper (comme les modèles
243 étendent AppModel et les contrôleurs étendent AppController). Pour créer la
244 fonctionnalité qui serait disponible pour tous les helpers, créez
5606ab9 Add all the files in my repository
cake17 authored
245 ``/app/View/Helper/AppHelper.php``::
246
247 <?php
248 App::uses('Helper', 'View');
249
250 class AppHelper extends Helper {
251 public function customMethod () {
252 }
253 }
254
255
256 .. _helper-api:
257
258 Helper API
259 ==========
260
261 .. php:class:: Helper
262
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
263 La classe de base pour les Helpers. Elle fournit un nombre de méthodes
264 utiles et des fonctionnalités pour le chargement d'autres helpers.
5606ab9 Add all the files in my repository
cake17 authored
265
266 .. php:method:: webroot($file)
267
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
268 Décide du nom de fichier du webroot de l'application. Si un thème est actif
269 et que le fichier existe dans le webroot du thème courant, le chemin du
270 fichier du thème sera retourné.
271
5606ab9 Add all the files in my repository
cake17 authored
272 .. php:method:: url($url, $full = false)
273
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
274 Génère une HTML escaped URL, qui délégue à :php:meth:`Router::url()`.
5606ab9 Add all the files in my repository
cake17 authored
275
276 .. php:method:: value($options = array(), $field = null, $key = 'value')
277
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
278 Récupère la valeur pour un nom d'input donné.
5606ab9 Add all the files in my repository
cake17 authored
279
280 .. php:method:: domId($options = null, $id = 'id')
281
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
282 Génère une valeur id en CamelCased pour la le champ sélectionné courant.
283 Ecraser cette méthode dans votre AppHelper vous permettra de changer la
284 façon dont CakePHP génére les attributs ID.
5606ab9 Add all the files in my repository
cake17 authored
285
286 Callbacks
287 ---------
288
289 .. php:method:: beforeRenderFile($viewFile)
290
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
291 Est appelé avant que tout fichier de vue soit rendu. Cela inclut les
292 eléments, le vues, les vues parentes et les layouts.
5606ab9 Add all the files in my repository
cake17 authored
293
294 .. php:method:: afterRenderFile($viewFile, $content)
295
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
296 Est appelé après que tout fichier de vue est rendu. Cela inclut les
297 eléments, le vues, les vues parentes et les layouts. Un callback
298 peut modifier et retourner ``$content`` pour changer la manière dont
299 le contenu rendu est affiché dans le navigateur.
5606ab9 Add all the files in my repository
cake17 authored
300
301 .. php:method:: beforeRender($viewFile)
302
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
303 La méthode beforeRender est appelé après la méthode beforeRender du
304 contrôleur, mais avant les rendus du contôleur de la vue et du layout
305 Reçoit le fichier à rendre en argument.
5606ab9 Add all the files in my repository
cake17 authored
306
307 .. php:method:: afterRender($viewFile)
308
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
309 Est appelé après que la vue est rendu, mais avant que le rendu du
310 layout ait commencé.
5606ab9 Add all the files in my repository
cake17 authored
311
312 .. php:method:: beforeLayout($layoutFile)
313
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
314 Est appelé avant que le rendu du layout commence. Reçoit le nom du fichier
315 layout en argument.
5606ab9 Add all the files in my repository
cake17 authored
316
317 .. php:method:: afterLayout($layoutFile)
318
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
319 Est appelé après que le rendu du layout est fini. Reçoit le nom du fichier
320 layout en argument.
5606ab9 Add all the files in my repository
cake17 authored
321
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
322 Helpers du coeur
323 ================
5606ab9 Add all the files in my repository
cake17 authored
324
325 :doc:`/core-libraries/helpers/cache`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
326 Utilisé par le coeur pour mettre en cache le contenu de la vue.
5606ab9 Add all the files in my repository
cake17 authored
327 :doc:`/core-libraries/helpers/form`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
328 Créé les formulaires HTML et les éléments du formulaire qui gèrent
329 eux-mêmes les problèmes de validation.
5606ab9 Add all the files in my repository
cake17 authored
330 :doc:`/core-libraries/helpers/html`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
331 Méthodes bien pratiques pour des balises bien formatées. Les images,
332 les liens, les tables, les balises d'en-tête etc ....
5606ab9 Add all the files in my repository
cake17 authored
333 :doc:`/core-libraries/helpers/js`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
334 Utilisé pour créer du Javascript compatible avec de nombreuses librairies
335 Javascript.
5606ab9 Add all the files in my repository
cake17 authored
336 :doc:`/core-libraries/helpers/number`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
337 Formate les nombres et les monnaies.
5606ab9 Add all the files in my repository
cake17 authored
338 :doc:`/core-libraries/helpers/paginator`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
339 Pagination à partir des données de Modèles et tri.
5606ab9 Add all the files in my repository
cake17 authored
340 :doc:`/core-libraries/helpers/rss`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
341 Méthodes bien pratiques pour la sortie de contenu RSS et de données XML.
5606ab9 Add all the files in my repository
cake17 authored
342 :doc:`/core-libraries/helpers/session`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
343 Accès pour la lecture des valeurs de session dans les vues.
5606ab9 Add all the files in my repository
cake17 authored
344 :doc:`/core-libraries/helpers/text`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
345 Mise en lien intelligente, Misse en évidence, truchement intelligent des
346 mots.
5606ab9 Add all the files in my repository
cake17 authored
347 :doc:`/core-libraries/helpers/time`
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
348 Détection de proximité (Est-ce l'année prochaine?), formatage sympa des
349 chaînes de caractère (Today, 10:30 am) et conversion entre les zones de
350 temps.
5606ab9 Add all the files in my repository
cake17 authored
351
352
353
354 .. meta::
5fc4de1 Files checked !!! Ready for pull request
cake17 authored
355 :title lang=fr: Helpers (Assistants)
356 :keywords lang=fr: classe php,fonction time,couche de présentation,puissance du processeur,ajax,balise,tableau,fonctionnalité,logique,syntaxe,élements,cakephp,plugins
Something went wrong with that request. Please try again.