Zend_Navigation-Pages-MVC.xml 8.4 KB

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