Zend_Navigation-Pages-MVC.xml 8.4 KB

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