Zend_View-Helpers-Partial.xml 7.4 KB

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