layout-usage.xml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.layout.usage">
  5. <title>Utiliser Zend_Layout</title>
  6. <para>
  7. L'utilisation classique de <classname>Zend_Layout</classname> est simple. En supposant
  8. que vous utilisez <classname>Zend_Application</classname>, il suffit simplement de
  9. passer des options de configuration et créer un script de layout.
  10. </para>
  11. <sect2 id="learning.layout.usage.configuration">
  12. <title>Layout Configuration</title>
  13. <para>
  14. L'endroit recommandé pour stocker les layouts est
  15. "<filename>layouts/scripts/</filename>" dans l'application:
  16. </para>
  17. <programlisting language="text"><![CDATA[
  18. application
  19. |-- Bootstrap.php
  20. |-- configs
  21. | `-- application.ini
  22. |-- controllers
  23. |-- layouts
  24. | `-- scripts
  25. | |-- layout.phtml
  26. ]]></programlisting>
  27. <para>
  28. Pour initialiser <classname>Zend_Layout</classname>, ajouter ceci à votre fichier
  29. de configuration ("<filename>application/configs/application.ini</filename>"):
  30. </para>
  31. <programlisting language="dosini"><![CDATA[
  32. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  33. resources.layout.layout = "layout"
  34. ]]></programlisting>
  35. <para>
  36. La première ligne indique où chercher les scripts de layout; la seconde donne le
  37. nom du script à utiliser (l'extension est supposée "<filename>.phtml</filename>"
  38. par défaut).
  39. </para>
  40. </sect2>
  41. <sect2 id="learning.layout.usage.layout-script">
  42. <title>Créer un script de layout</title>
  43. <para>
  44. Il convient maintenant de créer un script de layout. D'abord, vérifiez l'existance du
  45. dossier "<filename>application/layouts/scripts</filename>"; puis ouvrez un éditeur et
  46. créez une mise en page balisée. Les scripts de layout sont des scripts de vue, avec
  47. quelques différences tout de même.
  48. </para>
  49. <programlisting language="php"><![CDATA[
  50. <html>
  51. <head>
  52. <title>My Site</title>
  53. </head>
  54. <body>
  55. <?php echo $this->layout()->content ?>
  56. </body>
  57. </html>
  58. ]]></programlisting>
  59. <para>
  60. Dans l'exemple ci-dessus, un appel à l'aide de vue <methodname>layout()</methodname> y
  61. est effectué. Lorsque vous activez l'instance de <classname>Zend_Layout</classname>,
  62. vous avez aussi accès à une aide d'acion et de vue qui permettent d'accéder à l'instance
  63. de <classname>Zend_Layout</classname>; et vous pouvez ainsi appeler des méthodes
  64. sur l'objet layout. Dans notre cas, nous récupérons une variable appelée
  65. <varname>$content</varname>, et nous l'affichons. Par défaut, <varname>$content</varname>
  66. est peuplée du contenu de la vue rendue pour l'action en cours. Sinon, tout ce que vous
  67. feriez dans un script de vue est valide dans un script de layout: appel d'aides ou
  68. de méthodes sur la vue.
  69. </para>
  70. <para>
  71. Maintenant, nous avons un script de layout fonctionnel et notre application sait où le
  72. trouver.
  73. </para>
  74. </sect2>
  75. <sect2 id="learning.layout.usage.access">
  76. <title>Accéder à l'objet Layout</title>
  77. <para>
  78. Il est probable que vous ayez besoin d'accéder à l'objet instance layout. Cela est
  79. possible de trois manières:
  80. </para>
  81. <itemizedlist>
  82. <listitem>
  83. <para>
  84. <emphasis>Dans des scripts de vue:</emphasis> utilisez l'aide de vue
  85. <methodname>layout()</methodname>, qui retourne l'instance de
  86. <classname>Zend_Layout</classname> enregistrée au moyen du plugin MVC.
  87. </para>
  88. <programlisting language="php"><![CDATA[
  89. <?php $layout = $this->layout(); ?>
  90. ]]></programlisting>
  91. <para>
  92. Comme cela retourne l'objet de layout, vous pouvez appeler dessus toute méthode
  93. ou assigner des variables.
  94. </para>
  95. </listitem>
  96. <listitem>
  97. <para>
  98. <emphasis>Dans vos contrôleurs:</emphasis> utilisez ici l'aide d'action
  99. <methodname>layout()</methodname>, qui agit comme l'aide de vue.
  100. </para>
  101. <programlisting language="php"><![CDATA[
  102. // Appel de l'aide comme méthode sur le gestionnaire d'aides:
  103. $layout = $this->_helper->layout();
  104. // Ou, de manière plus détaillée:
  105. $helper = $this->_helper->getHelper('Layout');
  106. $layout = $helper->getLayoutInstance();
  107. ]]></programlisting>
  108. <para>
  109. Comme avec l'aide de vue, vous pouvez appeler dès lors n'importe quelle
  110. méthode de layout ou lui assigner des variables.
  111. </para>
  112. </listitem>
  113. <listitem>
  114. <para>
  115. <emphasis>Ailleurs: </emphasis> utilisez la méthode statique
  116. <methodname>getMvcInstance()</methodname>. Cette méthode retourne l'instance
  117. de layout comme déja vu plus haut maintenant.
  118. </para>
  119. <programlisting language="php"><![CDATA[
  120. $layout = Zend_Layout::getMvcInstance();
  121. ]]></programlisting>
  122. </listitem>
  123. <listitem>
  124. <para>
  125. <emphasis>Via le bootstrap: </emphasis> utilisez la ressource layout qui
  126. crée, configure et retourne l'objet <classname>Zend_Layout</classname>.
  127. </para>
  128. <programlisting language="php"><![CDATA[
  129. $layout = $bootstrap->getResource('Layout');
  130. ]]></programlisting>
  131. <para>
  132. Partout où vous avez accès à l'objet bootstrap, il s'agit de la méthode
  133. recommandée par rapport à <methodname>getMvcInstance()</methodname>.
  134. </para>
  135. </listitem>
  136. </itemizedlist>
  137. </sect2>
  138. <sect2 id="learning.layout.usage.other-operations">
  139. <title>Autres opérations</title>
  140. <para>
  141. Dans la plupart des cas, le script de configuration de layout ci-dessus (avec quelques
  142. modifications) répondra à vos besoins. Cependant, dans certains cas il peut être
  143. intéressant d'utiliser d'autres fonctionnalités. Dans les exemples qui suivent,
  144. vous allez utiliser une des<link
  145. linkend="learning.layout.usage.access">méthodes listées ci-dessus</link> pour
  146. récupérer l'objet layout.
  147. </para>
  148. <itemizedlist>
  149. <listitem>
  150. <para>
  151. <emphasis>Affecter les variables de layout</emphasis>.
  152. <classname>Zend_Layout</classname> garde en mémoire les variables de vue
  153. spécifiques à la layout, la clé <varname>$content</varname> en est un
  154. exemple. Vous pouvez assigner et récupérer ces variables grâce à la méthode
  155. <methodname>assign()</methodname> ou en y accédant comme des attributs
  156. classiques.
  157. </para>
  158. <programlisting language="php"><![CDATA[
  159. // Affecter du contenu:
  160. $layout->somekey = "foo"
  161. // Afficher ce même contenu:
  162. echo $layout->somekey; // 'foo'
  163. // Utiliser la méthode assign() :
  164. $layout->assign('someotherkey', 'bar');
  165. // Accéder à la variable reste identique:
  166. echo $layout->someotherkey; // 'bar'
  167. ]]></programlisting>
  168. </listitem>
  169. <listitem>
  170. <para>
  171. <methodname>disableLayout()</methodname>. Occasionellement, vous pouriez vouloir
  172. d"sactiver totalement les layouts, par exemple, pour répondre à une requête AJAX
  173. ou autravers d'une API RESTful. Dans ces cas, appelez la méthode
  174. <methodname>disableLayout()</methodname> de l'objet layout.
  175. </para>
  176. <programlisting language="php"><![CDATA[
  177. $layout->disableLayout();
  178. ]]></programlisting>
  179. <para>
  180. Le contraire de cette méthode, <methodname>enableLayout()</methodname>, permet
  181. de ré-activer le rendu des layouts pour l'action en cours.
  182. </para>
  183. </listitem>
  184. <listitem>
  185. <para>
  186. <emphasis>Utiliser un autre script de layout</emphasis>: Si vous avez plusieurs scripts
  187. de layout pour votre application, vous pouvez selectionner lequel rendre grâce à la
  188. méthode <methodname>setLayout()</methodname>. Précisez alors le nom du script de layout,
  189. sans l'extension.
  190. </para>
  191. <programlisting language="php"><![CDATA[
  192. // Utiliser le script de layout "alternate.phtml":
  193. $layout->setLayout('alternate');
  194. ]]></programlisting>
  195. <para>
  196. Le script de layout doit se trouver dans le <varname>$layoutPath</varname> précisé via
  197. la configuration (en bootstrap générallement). <classname>Zend_Layout</classname>
  198. utilisera le nouveau script à rendre.
  199. </para>
  200. </listitem>
  201. </itemizedlist>
  202. </sect2>
  203. </sect1>