Zend_Navigation-Pages-MVC.xml 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20827 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.navigation.pages.mvc">
  5. <title>Zend_Navigation_Page_Mvc</title>
  6. <para>
  7. <acronym>MVC</acronym> Seiten werden definiert indem <acronym>MVC</acronym> Parameter
  8. verwendet werden wie von der <classname>Zend_Controller</classname> Komponent bekannt. Eine
  9. <acronym>MVC</acronym> Seite wird intern in der <methodname>getHref()</methodname> Methode
  10. <classname>Zend_Controller_Action_Helper_Url</classname> verwenden um hrefs zu erstellen,
  11. und die <methodname>isActive()</methodname> Methode wird die Parameter von
  12. <classname>Zend_Controller_Request_Abstract</classname> mit den Seiten Parametern verknüpfen
  13. um zu erkennen ob die Seite aktiv ist.
  14. </para>
  15. <table id="zend.navigation.pages.mvc.options">
  16. <title>MVC Seiten Optionen</title>
  17. <tgroup cols="4">
  18. <thead>
  19. <row>
  20. <entry>Schlüssel</entry>
  21. <entry>Typ</entry>
  22. <entry>Standardwert</entry>
  23. <entry>Beschreibung</entry>
  24. </row>
  25. </thead>
  26. <tbody>
  27. <row>
  28. <entry><code>action</code></entry>
  29. <entry><type>String</type></entry>
  30. <entry><constant>NULL</constant></entry>
  31. <entry>
  32. Name der Aktion die verwendet wird wenn eine href zur Seite erstellt wird.
  33. </entry>
  34. </row>
  35. <row>
  36. <entry><code>controller</code></entry>
  37. <entry><type>String</type></entry>
  38. <entry><constant>NULL</constant></entry>
  39. <entry>
  40. Name des Controllers der verwendet wird wenn eine href zur Seite erstellt
  41. wird.
  42. </entry>
  43. </row>
  44. <row>
  45. <entry><code>module</code></entry>
  46. <entry><type>String</type></entry>
  47. <entry><constant>NULL</constant></entry>
  48. <entry>
  49. Name des Moduls das verwendet wird wenn eine href zur Seite erstellt wird.
  50. </entry>
  51. </row>
  52. <row>
  53. <entry><code>params</code></entry>
  54. <entry><type>Array</type></entry>
  55. <entry><methodname>array()</methodname></entry>
  56. <entry>
  57. Benutzer Parameter die verwendet werden wenn eine href zur Seite erstellt
  58. wird.
  59. </entry>
  60. </row>
  61. <row>
  62. <entry><code>route</code></entry>
  63. <entry><type>String</type></entry>
  64. <entry><constant>NULL</constant></entry>
  65. <entry>
  66. Name der Route die verwendet wird wenn eine href zur Seite erstellt wird.
  67. </entry>
  68. </row>
  69. <row>
  70. <entry><code>reset_params</code></entry>
  71. <entry><code>bool</code></entry>
  72. <entry><constant>TRUE</constant></entry>
  73. <entry>
  74. Ob Benutzer Parameter zurückgesetzt werden sollen wenn eine href zur Seite
  75. erstellt wird.
  76. </entry>
  77. </row>
  78. </tbody>
  79. </tgroup>
  80. </table>
  81. <note>
  82. <para>
  83. Die drei Beispiele anbei nehmen ein Standard <acronym>MVC</acronym> Setup an mit der
  84. <code>default</code> Route an.
  85. </para>
  86. <para>
  87. Die zurückgegebene <acronym>URI</acronym> ist relativ zur <code>baseUrl</code> in
  88. <classname>Zend_Controller_Front</classname>. Im Beispiel ist die baseUrl der
  89. Einfachheit halber '/'.
  90. </para>
  91. </note>
  92. <example id="zend.navigation.pages.mvc.example.getHref">
  93. <title>getHref() erstellt die Seiten URI</title>
  94. <para>
  95. Dieses Beispiel zeigt das <acronym>MVC</acronym> Seiten intern
  96. <classname>Zend_Controller_Action_Helper_Url</classname> verwenden um
  97. <acronym>URI</acronym>s zu erstellen wenn <code>$page->getHref()</code> aufgerufen wird.
  98. </para>
  99. <programlisting language="php"><![CDATA[
  100. // getHref() gibt / zurück
  101. $page = new Zend_Navigation_Page_Mvc(array(
  102. 'action' => 'index',
  103. 'controller' => 'index'
  104. ));
  105. // getHref() gibt /blog/post/view zurück
  106. $page = new Zend_Navigation_Page_Mvc(array(
  107. 'action' => 'view',
  108. 'controller' => 'post',
  109. 'module' => 'blog'
  110. ));
  111. // getHref() gibt /blog/post/view/id/1337 zurück
  112. $page = new Zend_Navigation_Page_Mvc(array(
  113. 'action' => 'view',
  114. 'controller' => 'post',
  115. 'module' => 'blog',
  116. 'params' => array('id' => 1337)
  117. ));
  118. ]]></programlisting>
  119. </example>
  120. <example id="zend.navigation.pages.mvc.example.isActive">
  121. <title>isActive() erkennt ob eine Seite aktiv ist</title>
  122. <para>
  123. Dieses Beispiel zeigt das <acronym>MVC</acronym> Seiten erkennen ob sie aktiv sind indem
  124. die Parameter verwendet werden die im Anfrage Objekt gefunden werden.
  125. </para>
  126. <programlisting language="php"><![CDATA[
  127. /*
  128. * Ausgeführte Anfrage:
  129. * - module: default
  130. * - controller: index
  131. * - action: index
  132. */
  133. $page1 = new Zend_Navigation_Page_Mvc(array(
  134. 'action' => 'index',
  135. 'controller' => 'index'
  136. ));
  137. $page2 = new Zend_Navigation_Page_Mvc(array(
  138. 'action' => 'bar',
  139. 'controller' => 'index'
  140. ));
  141. $page1->isActive(); // returns true
  142. $page2->isActive(); // returns false
  143. /*
  144. * Ausgeführte Anfrage:
  145. * - module: blog
  146. * - controller: post
  147. * - action: view
  148. * - id: 1337
  149. */
  150. $page = new Zend_Navigation_Page_Mvc(array(
  151. 'action' => 'view',
  152. 'controller' => 'post',
  153. 'module' => 'blog'
  154. ));
  155. // Gibt true zurück, weil die Anfrage die gleichen Module, Controller
  156. // und Aktion hat
  157. $page->isActive();
  158. /*
  159. * Ausgefürte Anfrage:
  160. * - module: blog
  161. * - controller: post
  162. * - action: view
  163. */
  164. $page = new Zend_Navigation_Page_Mvc(array(
  165. 'action' => 'view',
  166. 'controller' => 'post',
  167. 'module' => 'blog',
  168. 'params' => array('id' => null)
  169. ));
  170. // Gibt false zurück weil die Seite den id Parameter in der
  171. // Anfrage gesetzt haben muß
  172. $page->isActive(); // gibt false zurück
  173. ]]></programlisting>
  174. </example>
  175. <example id="zend.navigation.pages.mvc.example.routes">
  176. <title>Routen verwenden</title>
  177. <para>
  178. Routen können mit <acronym>MVC</acronym> Seite verwendet werden. Wenn eine Seite eine
  179. Route hat, wird diese Route in <methodname>getHref()</methodname> verwendet um die
  180. <acronym>URL</acronym> für die Seite zu erstellen.
  181. </para>
  182. <para>
  183. <note>
  184. <para>
  185. Beachte, das wenn die <code>route</code> Eigenschaft in einer Seite verwendet
  186. wird, man auch die Standard Parameter spezifizieren sollte die diese Route
  187. definieren (module, controller, action, usw.), andernfalls ist die
  188. <methodname>isActive()</methodname> Methode nicht dazu in der Lage zu erkennen
  189. ob die Seite aktiv ist oder nicht. Der Grund hierfür ist, das es aktuell keinen
  190. Weg gibt die Standardparameter von einem
  191. <classname>Zend_Controller_Router_Route_Interface</classname> Objekt zu
  192. erhalten, oder die aktuelle Route von einem
  193. <classname>Zend_Controller_Router_Interface</classname> Objekt.
  194. </para>
  195. </note>
  196. </para>
  197. <programlisting language="php"><![CDATA[
  198. // Die folgende Route wird den ZF Router hinzugefügt
  199. Zend_Controller_Front::getInstance()->getRouter()->addRoute(
  200. 'article_view', // route name
  201. new Zend_Controller_Router_Route(
  202. 'a/:id',
  203. array(
  204. 'module' => 'news',
  205. 'controller' => 'article',
  206. 'action' => 'view',
  207. 'id' => null
  208. )
  209. )
  210. );
  211. // Eine Seite wird mit der 'route' Option erstellt
  212. $page = new Zend_Navigation_Page_Mvc(array(
  213. 'label' => 'A news article',
  214. 'route' => 'article_view',
  215. 'module' => 'news', // wird für isActive() benötigt, siehe oben
  216. 'controller' => 'article', // wird für isActive() benötigt, siehe oben
  217. 'action' => 'view', // wird für isActive() benötigt, siehe oben
  218. 'params' => array('id' => 42)
  219. ));
  220. // Gibt /a/42 zurück
  221. $page->getHref();
  222. ]]></programlisting>
  223. </example>
  224. </sect2>