[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_View-Helpers-Partial.xml
blob24b95a12b242cf1300a6fbd735ea4496f636234a
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 20794 -->
3 <!-- Reviewed: no -->
4 <sect3 id="zend.view.helpers.initial.partial">
5     <title>L'aide de vue Partial</title>
7     <para>
8         L'aide de vue <code>Partial</code> est utilisée pour effectuer le rendu d'un modèle
9         ("template") spécifique dans sa propre portée de variable. L'utilisation principale est pour
10         les fragments réutilisables de modèle avec lesquels vous n'avez pas besoin de vous inquiéter
11         des conflits de noms de variable. De plus, ils vous permettent de spécifier les scripts de
12         vue partiels dans des modules spécifiques.
13     </para>
15     <para>
16         Une soeur de l'aide <code>Partial</code>, l'aide de vue de <code>PartialLoop</code>
17         vous permet de passer des données itératives, et effectue un rendu partiel pour chaque
18         élément.
19     </para>
21     <note>
22         <title>Compteur de PartialLoop</title>
24         <para>
25             L'aide de vue <code>PartialLoop</code> assigne une variable à la vue nommée
26             <code>partialCounter</code> qui fournit la position courante du tableau au script de
27             vue. Ce qui permet simplement d'avoir des couleurs alternatives dans les lignes d'un
28             tableau par exemple.
29         </para>
30     </note>
32     <example id="zend.view.helpers.initial.partial.usage">
33         <title>Utilisation de base des Partials</title>
35         <para>
36             L'utilisation de base des <code>Partials</code> est d'effectuer le rendu d'un
37             fragment de modèle dans sa propre portée de vue. Examinez le script partiel suivant
38             :
39         </para>
41         <programlisting language="php"><![CDATA[
42 <!--partiel.phtml-->
43 <ul>
44     <li>De : <?php echo $this->escape($this->de) ?></li>
45     <li>Sujet : <?php echo $this->escape($this->sujet) ?></li>
46 </ul>
47 ]]></programlisting>
49         <para>
50             Vous l'appelleriez alors dans votre script de vue en utilisant ce qui suit
51             :
52         </para>
54         <programlisting language="php"><![CDATA[
55 <?php echo $this->partial('partiel.phtml', array(
56     'de' => 'Equipe Framework',
57     'sujet' => 'vues partielles')); ?>
58 ]]></programlisting>
60         <para>Qui vous retournerait :</para>
62         <programlisting language="html"><![CDATA[
63 <ul>
64     <li>De : Equipe Framework</li>
65     <li>Sujet : vues partielles</li>
66 </ul>
67 ]]></programlisting>
68     </example>
70     <note>
71         <title>Qu'est qu'un modèle ?</title>
73         <para>
74             Un modèle utilisé avec l'aide de vue <code>Partial</code> peut être un des
75             suivants :
76         </para>
78         <itemizedlist>
79             <listitem>
80                 <para>
81                     <emphasis>Tableaux ("array")</emphasis> : si un tableau est fourni, il
82                     devrait être associatif, car ses paires de clé/valeur sont assignées à la vue
83                     avec les clés comme variables de vue.
84                 </para>
85             </listitem>
87             <listitem>
88                 <para>
89                     <emphasis>Objet implémentant la méthode toArray()</emphasis> : si un objet
90                     est fourni et qu'il possède une méthode <methodname>toArray()</methodname>, le résultat de
91                     <methodname>toArray()</methodname> sera assigné à la vue comme variable de vue.
92                 </para>
93             </listitem>
95             <listitem>
96                 <para>
97                     <emphasis>Objet standard</emphasis> : tout autre objet assignera le
98                     résultat de <methodname>object_get_vars()</methodname> (essentiellement toutes les
99                     propriétés publiques de l'objet) à l'objet de vue.
100                 </para>
101             </listitem>
102         </itemizedlist>
104         <para>
105             Si votre modèle est un objet, vous pouvez vouloir le fournir en tant qu'objet au
106             script partiel, plutôt que de le sérialiser en un tableau de variables. Vous pouvez
107             faire ceci en paramétrant la propriété "objectKey" de l'aide de vue approprié :
108         </para>
110         <programlisting language="php"><![CDATA[
111 // Tell partial to pass objects as 'model' variable
112 $view->partial()->setObjectKey('model');
114 // Tell partial to pass objects from partialLoop as 'model' variable in final
115 // partial view script:
116 $view->partialLoop()->setObjectKey('model');
117 ]]></programlisting>
119         <para>
120             Cette technique est particulièrement utile quand vous fournissez un
121             <classname>Zend_Db_Table_Rowset</classname>s à <methodname>partialLoop()</methodname>, ainsi vous
122             avez un accès complet à vos objets <code>Row</code> à l'intérieur de vos scripts de vue,
123             permettant d'appeler des méthodes sur ceux-ci (comme récupérer des valeurs d'un
124             <code>Row</code> parent ou dépendant).
125         </para>
126     </note>
128     <example id="zend.view.helpers.initial.partial.partialloop">
129         <title>Utiliser PartialLoop pour effectuer le rendu d'éléments itératifs</title>
131         <para>
132             Typiquement, vous voudrez employer des <code>Partials</code> dans une boucle, pour
133             rendre le même fragment de contenu plusieurs fois ; de cette façon vous pouvez mettre de
134             grands blocs de contenu répété ou de logique complexe d'affichage dans un endroit
135             unique. Toutefois ceci a un impact d'exécution, car l'aide Partial doit être appelée une
136             fois par itération.
137         </para>
139         <para>
140             L'aide de vue <code>PartialLoop</code> résout ce problème. Elle vous permet de
141             fournir un élément itérable (tableau ou objet implémentant <code>Iterator</code>) comme
142             modèle. Elle réitère alors au-dessus de celui-ci en fournissant les éléments au script
143             partiel. Les éléments dans l'itérateur peuvent être n'importe quel modèle que l'aide de
144             vue <code>Partial</code> permet (cf. ci-dessus).
145         </para>
147         <para>Considérons le script partiel suivant :</para>
149         <programlisting language="php"><![CDATA[
150 <!--partialLoop.phtml-->
151     <dt><?php echo $this->key ?></dt>
152     <dd><?php echo $this->value ?></dd>
153 ]]></programlisting>
155         <para>Et le "modèle" suivant :</para>
157         <programlisting language="php"><![CDATA[
158 $model = array(
159     array('key' => 'Mammifère', 'value' => 'Chameau'),
160     array('key' => 'Oiseau',    'value' => 'Pingouin'),
161     array('key' => 'Reptile',   'value' => 'Asp'),
162     array('key' => 'Poisson',   'value' => 'Flounder')
164 ]]></programlisting>
166         <para>
167             Dans votre script de vue, vous pouvez maintenant appeler l'aide
168             <code>PartialLoop</code> :
169         </para>
171         <programlisting language="php"><![CDATA[
172 <dl>
173 <?php echo $this->partialLoop('partialLoop.phtml', $model) ?>
174 </dl>
175 ]]></programlisting>
177         <programlisting language="html"><![CDATA[
178 <dl>
179     <dt>Mammifère</dt>
180     <dd>Chameau</dd>
182     <dt>Oiseau</dt>
183     <dd>Pingouin</dd>
185     <dt>Reptile</dt>
186     <dd>Asp</dd>
188     <dt>Poisson</dt>
189     <dd>Flounder</dd>
191 </dl>
192 ]]></programlisting>
193     </example>
195     <example id="zend.view.helpers.initial.partial.modules">
196         <title>Effectuer le rendu partiel dans des modules différents</title>
198         <para>
199             Parfois un partiel existera dans un module différent. Si vous connaissez le nom du
200             module, vous pouvez le fournir comme deuxième argument à <methodname>partial()</methodname> ou à
201             <methodname>partialLoop()</methodname>, en déplaçant l'argument <varname>$model</varname> à la troisième
202             position.
203         </para>
205         <para>
206             Par exemple, s'il y a un gestionnaire de page partiel que vous souhaitez utiliser
207             et qui est dans le module "liste", vous pourriez le saisir comme suit :
208         </para>
210         <programlisting language="php"><![CDATA[
211 <?php echo $this->partial('pager.phtml', 'liste', $pagerData) ?>
212 ]]></programlisting>
214         <para>
215             De cette façon, vous pouvez réutiliser des partiels créés spécifiquement pour
216             d'autre modules. Ceci dit, il est probablement une meilleure pratique de mettre des
217             partiels réutilisables dans des dossiers partagés de script de vue.
218         </para>
219     </example>
220 </sect3>