Zend_Navigation-Pages-MVC.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.navigation.pages.mvc">
  5. <title>Zend_Navigation_Page_Mvc</title>
  6. <para>
  7. Les pages de type <acronym>MVC</acronym> utilisent des paramètres <acronym>MVC</acronym>
  8. issus du composant <classname>Zend_Controller</classname>. Une page <acronym>MVC</acronym> utilisera
  9. en interne <classname>Zend_Controller_Action_Helper_Url</classname> dans la méthode
  10. <methodname>getHref()</methodname> pour générer des cibles (hrefs), et la méthode
  11. <methodname>isActive()</methodname> utilisera les paramètres issus de
  12. <classname>Zend_Controller_Request_Abstract</classname> et les comparera aux paramètres
  13. internes à la page.
  14. </para>
  15. <table id="zend.navigation.pages.mvc.options">
  16. <title>Options des pages de type MV</title>
  17. <tgroup cols="4">
  18. <thead>
  19. <row>
  20. <entry>Clé</entry>
  21. <entry>Type</entry>
  22. <entry>Valeur par défaut</entry>
  23. <entry>Description</entry>
  24. </row>
  25. </thead>
  26. <tbody>
  27. <row>
  28. <entry><code>action</code></entry>
  29. <entry><type>chaine</type></entry>
  30. <entry><constant>NULL</constant></entry>
  31. <entry>
  32. Nom de l'action pour générer des cibles vers la page.
  33. </entry>
  34. </row>
  35. <row>
  36. <entry><code>controller</code></entry>
  37. <entry><type>chaine</type></entry>
  38. <entry><constant>NULL</constant></entry>
  39. <entry>
  40. Nom du contrôleur pour générer des cibles vers la page.
  41. </entry>
  42. </row>
  43. <row>
  44. <entry><code>module</code></entry>
  45. <entry><type>chaine</type></entry>
  46. <entry><constant>NULL</constant></entry>
  47. <entry>
  48. Nom du module pour générer des cibles vers la page.
  49. </entry>
  50. </row>
  51. <row>
  52. <entry><code>params</code></entry>
  53. <entry><type>Array</type></entry>
  54. <entry><methodname>array()</methodname></entry>
  55. <entry>
  56. Paramètres utilisateurs pour générer des cibles vers la page.
  57. </entry>
  58. </row>
  59. <row>
  60. <entry><code>route</code></entry>
  61. <entry><type>chaine</type></entry>
  62. <entry><constant>NULL</constant></entry>
  63. <entry>
  64. Nom de la route à utiliser pour générer des cibles vers la page.
  65. </entry>
  66. </row>
  67. <row>
  68. <entry><code>reset_params</code></entry>
  69. <entry><code>bool</code></entry>
  70. <entry><constant>TRUE</constant></entry>
  71. <entry>
  72. Remettre à zéro les paramètres de la route ou non.
  73. </entry>
  74. </row>
  75. </tbody>
  76. </tgroup>
  77. </table>
  78. <note>
  79. <para>
  80. Les trois exemples qui suivent supposent une configuration <acronym>MVC</acronym> par défaut,
  81. avec une route <code>default</code>.
  82. </para>
  83. <para>
  84. L'<acronym>URI</acronym> retournée est relative au <code>baseUrl</code> de
  85. <classname>Zend_Controller_Front</classname>. Dans nos exemples, le baseUrl vaut
  86. '/' pour simplifier.
  87. </para>
  88. </note>
  89. <example id="zend.navigation.pages.mvc.example.getHref">
  90. <title>getHref() génères les URI de la page</title>
  91. <para>
  92. Cet exemple montre que les pages de type <acronym>MVC</acronym> utilisent
  93. <classname>Zend_Controller_Action_Helper_Url</classname> en interne pour générer
  94. les <acronym>URI</acronym>s suite à l'appel à <code>$page->getHref()</code>.
  95. </para>
  96. <programlisting language="php"><![CDATA[
  97. // getHref() retourne /
  98. $page = new Zend_Navigation_Page_Mvc(array(
  99. 'action' => 'index',
  100. 'controller' => 'index'
  101. ));
  102. // getHref() retourne /blog/post/view
  103. $page = new Zend_Navigation_Page_Mvc(array(
  104. 'action' => 'view',
  105. 'controller' => 'post',
  106. 'module' => 'blog'
  107. ));
  108. // getHref() retourne /blog/post/view/id/1337
  109. $page = new Zend_Navigation_Page_Mvc(array(
  110. 'action' => 'view',
  111. 'controller' => 'post',
  112. 'module' => 'blog',
  113. 'params' => array('id' => 1337)
  114. ));
  115. ]]></programlisting>
  116. </example>
  117. <example id="zend.navigation.pages.mvc.example.isActive">
  118. <title>isActive() détermine si la page est active</title>
  119. <para>
  120. Cet exemple montre que les pages de type <acronym>MVC</acronym> utilisent l'objet de
  121. requête afin de déterminer si elles sont actives ou non.
  122. </para>
  123. <programlisting language="php"><![CDATA[
  124. /*
  125. * Requête dispatchée:
  126. * - module: default
  127. * - controller: index
  128. * - action: index
  129. */
  130. $page1 = new Zend_Navigation_Page_Mvc(array(
  131. 'action' => 'index',
  132. 'controller' => 'index'
  133. ));
  134. $page2 = new Zend_Navigation_Page_Mvc(array(
  135. 'action' => 'bar',
  136. 'controller' => 'index'
  137. ));
  138. $page1->isActive(); // retourne true
  139. $page2->isActive(); // retourne false
  140. /*
  141. * Requête dispatchée:
  142. * - module: blog
  143. * - controller: post
  144. * - action: view
  145. * - id: 1337
  146. */
  147. $page = new Zend_Navigation_Page_Mvc(array(
  148. 'action' => 'view',
  149. 'controller' => 'post',
  150. 'module' => 'blog'
  151. ));
  152. // retourne true, car la requpete a le même trio module/controller/action
  153. $page->isActive();
  154. /*
  155. * Requête dispatchée:
  156. * - module: blog
  157. * - controller: post
  158. * - action: view
  159. */
  160. $page = new Zend_Navigation_Page_Mvc(array(
  161. 'action' => 'view',
  162. 'controller' => 'post',
  163. 'module' => 'blog',
  164. 'params' => array('id' => null)
  165. ));
  166. // retourne false, car page a besoin du paramètre id dans la requête
  167. $page->isActive(); // retourne false
  168. ]]></programlisting>
  169. </example>
  170. <example id="zend.navigation.pages.mvc.example.routes">
  171. <title>Utiliser les routes</title>
  172. <para>
  173. Les routes sont utilisables dans les pages de type <acronym>MVC</acronym>. Si une page a une route,
  174. elle sera utilisée par <methodname>getHref()</methodname> pour générer l'<acronym>URL</acronym>
  175. de la page.
  176. </para>
  177. <para>
  178. <note>
  179. <para>
  180. Notez que si vous utilisez le paramètre <code>route</code>, vous devrez
  181. préciser les paramètres par défaut de la route
  182. (module, controller, action, etc.), autremant <methodname>isActive()</methodname>
  183. ne pourra déterminer si la page est active ou pas. La raison est qu'il n'existe
  184. actuellement aucune méthode permettant de récupérer les paramètres par défaut
  185. d'une route un objet <classname>Zend_Controller_Router_Route_Interface</classname>,
  186. ni même de récupérer la route courante depuis un objet
  187. <classname>Zend_Controller_Router_Interface</classname>.
  188. </para>
  189. </note>
  190. </para>
  191. <programlisting language="php"><![CDATA[
  192. // La route suivante est ajoutée au routeur de ZF
  193. Zend_Controller_Front::getInstance()->getRouter()->addRoute(
  194. 'article_view', // nom de la route
  195. new Zend_Controller_Router_Route(
  196. 'a/:id',
  197. array(
  198. 'module' => 'news',
  199. 'controller' => 'article',
  200. 'action' => 'view',
  201. 'id' => null
  202. )
  203. )
  204. );
  205. // Une page est créee avec un paramètre 'route'
  206. $page = new Zend_Navigation_Page_Mvc(array(
  207. 'label' => 'A news article',
  208. 'route' => 'article_view',
  209. 'module' => 'news', // requis pour isActive(), voyez les notes ci-dessus
  210. 'controller' => 'article', // requis pour isActive(), voyez les notes ci-dessus
  211. 'action' => 'view', // requis pour isActive(), voyez les notes ci-dessus
  212. 'params' => array('id' => 42)
  213. ));
  214. // retourne: /a/42
  215. $page->getHref();
  216. ]]></programlisting>
  217. </example>
  218. </sect2>