1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 19433 -->
4 <sect3 id="zend.view.helpers.initial.placeholder">
5 <title>L'aide de vue Placeholder</title>
9 NDT. : Le terme "placeholder est conservé car sa signification varie en fonction
10 du contexte : conteneur générique ou emplacement réservé.
15 L'aide de vue <code>Placeholder</code> est utilisé pour faire persister le contenu
16 entre les scripts de vues et les instances de vues. Il offre aussi des fonctionnalités
17 utiles comme l'agrégation de contenu, la capture de contenu de scripts de vues pour une
18 utilisation ultérieure, et l'ajout de texte pré ou post contenu (et la personnalisation des
19 séparateurs de contenu).
22 <example id="zend.view.helpers.initial.placeholder.usage">
23 <title>Utilisation basique des Placeholders</title>
26 L'utilisation basique des placeholders est la persistance des données de vue.
27 Chaque appel de l'aide <code>Placeholder</code> attend un nom de placeholder ; l'aide
28 retourne un objet conteneur que vous pouvez soit manipuler ou simplement envoyé à
32 <programlisting language="php"><![CDATA[
33 <?php $this->placeholder('foo')->set("Du texte pour plus tard") ?>
36 echo $this->placeholder('foo');
37 // outputs "Du texte pour plus tard"
42 <example id="zend.view.helpers.initial.placeholder.aggregation">
43 <title>Utilisation des Placeholders pour agréger du contenu</title>
46 L'agrégation du contenu via les placeholders peut être aussi utile parfois. Par
47 exemple, votre script de vue peut avoir une variable sous forme de tableau à partir de
48 laquelle vous souhaitez récupérer des messages à afficher plus tard ; un autre script de
49 vue peut ensuite déterminer de la manière suivant laquelle ils seront affichés.
53 L'aide de vue <code>Placeholder</code> utilise des conteneurs qui étendent
54 <code>ArrayObject</code>, fournissant de riches fonctionnalités de manipulations des
55 tableaux. De plus, il offre une variété de méthodes pour le formatage du contenu stockée
62 <methodname>setPrefix($prefix)</methodname> paramètre le texte qui sera placé
63 préalablement à tout le contenu. Utilisez <methodname>getPrefix()</methodname> à tout moment
64 pour déterminer le réglage courant.
70 <methodname>setPostfix($prefix)</methodname> paramètre le texte qui sera placé après
71 tout le contenu. Utilisez <methodname>getPostfix()</methodname> à tout moment pour
72 déterminer le réglage courant.
78 <methodname>setSeparator($prefix)</methodname> paramètre le texte qui sera placé entre
79 chaque élément de contenu. Utilisez <methodname>getSeparator()</methodname> à tout moment
80 pour déterminer le réglage courant.
86 <methodname>setIndent($prefix)</methodname> peut être utilisé pour paramétrer une
87 indentation pour chaque élément du contenu. Si un entier est fourni, il s'agira
88 du nombre d'espaces à utiliser ; si une chaîne est fournie, elle sera utilisée.
89 Utilisez <methodname>getIndent()</methodname> à tout moment pour déterminer le réglage
95 <programlisting language="php"><![CDATA[
96 <!-- premier script de vue -->
97 <?php $this->placeholder('foo')->exchangeArray($this->data) ?>
100 <programlisting language="php"><![CDATA[
101 <!-- autre script (plus tard) -->
103 $this->placeholder('foo')->setPrefix("<ul>\n <li>")
104 ->setSeparator("</li><li>\n")
106 ->setPostfix("</li></ul>\n");
110 echo $this->placeholder('foo');
111 // affiche une liste non-ordonnée avec une belle indentation
116 Puisque l'objet conteneur <code>Placeholder</code> étend <code>ArrayObject</code>,
117 vous pouvez ainsi facilement assigner du contenu à une clé du conteneur en particulier,
118 plutôt que de simplement de les envoyer les unes après les autres ("push"). Les clés
119 peuvent être accédées soit en utilisant les propriétés d'objet ou comme les clés d'un
123 <programlisting language="php"><![CDATA[
124 <?php $this->placeholder('foo')->bar = $this->data ?>
125 <?php echo $this->placeholder('foo')->bar ?>
128 $foo = $this->placeholder('foo');
134 <example id="zend.view.helpers.initial.placeholder.capture">
135 <title>Utilisation des Placeholders pour capturer le contenu</title>
138 Occasionnellement vous pouvez avoir du contenu pour un placeholder dans un script
139 de vue qui est simple à mettre sous forme de modèle ("template") ; l'aide de vue
140 <code>Placeholder</code> vous permet de capturer tout contenu arbitraire pour un rendu
141 ultérieur en utilisant l'API suivante.
147 <methodname>captureStart($type, $key)</methodname> commence la capture de
152 <varname>$type</varname> doit être une des constantes de
153 <code>Placeholder</code> : <constant>APPEND</constant> ou <constant>SET</constant>. Si c'est
154 <constant>APPEND</constant>, le contenu capturé est ajouté à la liste de contenu courant
155 dans le placeholder ; si c'est <constant>SET</constant>, le contenu capturé remplace
156 toute valeur existante dans le placeholder (potentiellement permet de remplacer
157 tout contenu préalable). Par défaut, <varname>$type</varname> vaut
158 <constant>APPEND</constant>.
162 <varname>$key</varname> peut être utilisé pour spécifier une clé en particulier
163 dans le conteneur placeholder dans laquelle vous souhaitez capturer le
168 <methodname>captureStart()</methodname> verrouille la capture jusqu'à l'appel de
169 <methodname>captureEnd()</methodname> ; vous ne pouvez pas imbriquer des captures avec le
170 même conteneur placeholder. Le faire entraînera la levée d'une exception.
176 <methodname>captureEnd()</methodname> stoppe la capture de contenu, et le place dans
177 l'objet conteneur suivant la manière utilisée pour appeler
178 <methodname>captureStart()</methodname>.
183 <programlisting language="php"><![CDATA[
184 <!-- Default capture: append -->
185 <?php $this->placeholder('foo')->captureStart();
186 foreach ($this->data as $datum): ?>
188 <h2><?php echo $datum->title ?></h2>
189 <p><?php echo $datum->content ?></p>
192 <?php $this->placeholder('foo')->captureEnd() ?>
194 <?php echo $this->placeholder('foo') ?>
197 <programlisting language="php"><![CDATA[
198 <!-- Capture to key -->
199 <?php $this->placeholder('foo')->captureStart('SET', 'data');
200 foreach ($this->data as $datum): ?>
202 <h2><?php echo $datum->title ?></h2>
203 <p><?php echo $datum->content ?></p>
206 <?php $this->placeholder('foo')->captureEnd() ?>
208 <?php echo $this->placeholder('foo')->data ?>
212 <sect4 id="zend.view.helpers.initial.placeholder.implementations">
213 <title>Implémentation concrète des Placeholder</title>
216 Zend Framework embarque certaines implémentations concrètes de placeholders.
217 Celles-ci sont destinées à des placeholders communément utilisés : doctype, titre de
218 page, et les différents éléments <head>. Dans tous les cas, appeler le placeholder
219 sans arguments retournera l'élément lui-même.
223 La documentation pour chacun des éléments existe séparément, suivez les liens
229 <para><link linkend="zend.view.helpers.initial.doctype">Doctype</link></para>
233 <para><link linkend="zend.view.helpers.initial.headlink">HeadLink</link></para>
237 <para><link linkend="zend.view.helpers.initial.headmeta">HeadMeta</link></para>
243 linkend="zend.view.helpers.initial.headscript">HeadScript</link>
250 linkend="zend.view.helpers.initial.headstyle">HeadStyle</link>
257 linkend="zend.view.helpers.initial.headtitle">HeadTitle</link>
264 linkend="zend.view.helpers.initial.inlinescript">InlineScript</link>