Zend_Navigation-Pages-Common.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect2 id="zend.navigation.pages.common">
  4. <title>Общие функциональные возможности страниц</title>
  5. <para>
  6. Все классы страниц должны расширять
  7. <classname>Zend_Navigation_Page</classname>, таким образом они будут
  8. наследовать один общий набор функциональных возможностей и свойств.
  9. </para>
  10. <para>
  11. Для опций есть соотвествующие установочные методы с префиксом
  12. <code>set</code>.
  13. Это означает, что опции <code>order</code> соответствует метод
  14. <methodname>setOrder()</methodname>, а опции <code>reset_params</code> -
  15. метод <methodname>setResetParams()</methodname>.
  16. Если для опции нет соответствующего метода для установки, то она будет
  17. устанавливаться как пользовательское свойство страницы.
  18. </para>
  19. <para>
  20. Более подробную информацию о расширении
  21. <classname>Zend_Navigation_Page</classname> читайте в
  22. <link linkend="zend.navigation.pages.custom">разделе
  23. о создании своих типов страниц</link>.
  24. </para>
  25. <table id="zend.navigation.pages.common.options">
  26. <title>Общие опции страниц</title>
  27. <tgroup cols="4">
  28. <thead>
  29. <row>
  30. <entry>Ключ</entry>
  31. <entry>Тип</entry>
  32. <entry>Значение по умолчанию</entry>
  33. <entry>Описание</entry>
  34. </row>
  35. </thead>
  36. <tbody>
  37. <row>
  38. <entry><code>label</code></entry>
  39. <entry><type>String</type></entry>
  40. <entry><constant>NULL</constant></entry>
  41. <entry>
  42. Наименование страницы, например, "Главная" или "Блог".
  43. </entry>
  44. </row>
  45. <row>
  46. <entry><code>id</code></entry>
  47. <entry><type>String</type> | <code>int</code></entry>
  48. <entry><constant>NULL</constant></entry>
  49. <entry>
  50. Идентификатор, который может использоваться
  51. при рендеринге данной страницы, обычно в качестве
  52. атрибута id в элементе ссылки.
  53. </entry>
  54. </row>
  55. <row>
  56. <entry><code>class</code></entry>
  57. <entry><type>String</type></entry>
  58. <entry><constant>NULL</constant></entry>
  59. <entry>
  60. Класс <acronym>CSS</acronym>, который может
  61. использоваться при рендеринге данной
  62. страницы, обычно в элементе ссылки.
  63. </entry>
  64. </row>
  65. <row>
  66. <entry><code>title</code></entry>
  67. <entry><type>String</type></entry>
  68. <entry><constant>NULL</constant></entry>
  69. <entry>
  70. Краткое описание страницы, обычно оно используется
  71. в качестве атрибута <code>title</code> ссылки.
  72. </entry>
  73. </row>
  74. <row>
  75. <entry><code>target</code></entry>
  76. <entry><type>String</type></entry>
  77. <entry><constant>NULL</constant></entry>
  78. <entry>
  79. Задает целевой фрейм для страницы, обычно
  80. используется в качестве соответствующего атрибута
  81. ссылки.
  82. </entry>
  83. </row>
  84. <row>
  85. <entry><code>rel</code></entry>
  86. <entry><type>Array</type></entry>
  87. <entry><methodname>array()</methodname></entry>
  88. <entry>
  89. Определяет "направленные вперед" связи
  90. (forward relations) для страницы,
  91. т.е. отношение текущего ресурса к тому,
  92. на который ссылается страница.
  93. Все элементы в массиве являются парами ключ-значение,
  94. где ключ обозначает тип связи, а значение является
  95. указателем на связанную страницу.
  96. Примером такой пары ключ-значение может быть
  97. <code>'alternate' => 'format/plain.html'</code>.
  98. С целью обеспечения полной гибкости на значения из пар
  99. ключ-значение не накладывается никаких ограничений.
  100. Значение не обязательно должно быть строкой.
  101. Для получения более подробной информации об опциях
  102. <code>rel</code> и <code>rev</code> читайте
  103. <link
  104. linkend="zend.view.helpers.initial.navigation.links">раздел
  105. о помощнике ссылок</link>.
  106. </entry>
  107. </row>
  108. <row>
  109. <entry><code>rev</code></entry>
  110. <entry><type>Array</type></entry>
  111. <entry><methodname>array()</methodname></entry>
  112. <entry>
  113. Определяет "обратные" связи (reverse relations) для
  114. страницы,
  115. т.е. отношение ресурса, на который ссылается данная
  116. страница, к текущему.
  117. Работает в точности так же, как <code>rel</code>.
  118. </entry>
  119. </row>
  120. <row>
  121. <entry><code>order</code></entry>
  122. <entry><type>String</type> | <code>int</code> | <constant>NULL</constant></entry>
  123. <entry><constant>NULL</constant></entry>
  124. <entry>
  125. Работает так же, как одноименная опция для элементов
  126. форм в
  127. <link linkend="zend.form.quickstart.render"><classname>Zend_Form</classname></link>.
  128. Страницы будут обходиться в указанном через эту опцию
  129. порядке, это значит, что вы можете
  130. сделать так, чтобы страница была первой в итерации,
  131. присвоив атрибуту <code>order</code> какое-то наименьшее
  132. значение, например, -100.
  133. Если передается строка, то она должна
  134. преобразовываться в валидный <code>int</code>.
  135. В случае значения <constant>NULL</constant>
  136. будет использоваться порядок, в котором страницы были
  137. добавлены в контейнер.
  138. </entry>
  139. </row>
  140. <row>
  141. <entry><code>resource</code></entry>
  142. <entry><type>String</type> | <classname>Zend_Acl_Resource_Interface</classname> | <constant>NULL</constant></entry>
  143. <entry><constant>NULL</constant></entry>
  144. <entry>
  145. Ресурс <acronym>ACL</acronym>, который требуется
  146. связать со страницей.
  147. Более подробную информацию читайте в
  148. <link linkend="zend.view.helpers.initial.navigation.acl">разделе
  149. об интеграции <acronym>ACL</acronym> в помощники
  150. видов</link>.
  151. </entry>
  152. </row>
  153. <row>
  154. <entry><code>privilege</code></entry>
  155. <entry><type>String</type> | <constant>NULL</constant></entry>
  156. <entry><constant>NULL</constant></entry>
  157. <entry>
  158. Привилегия <acronym>ACL</acronym>, которую требуется
  159. связать со страницей.
  160. Более подробную информацию читайте в
  161. <link linkend="zend.view.helpers.initial.navigation.acl">разделе
  162. об интеграции <acronym>ACL</acronym> в помощники
  163. видов</link>.
  164. </entry>
  165. </row>
  166. <row>
  167. <entry><code>active</code></entry>
  168. <entry><code>bool</code></entry>
  169. <entry><constant>FALSE</constant></entry>
  170. <entry>
  171. Должна ли страница считаться активной для
  172. текущего запроса.
  173. Если эта опция равна <constant>FALSE</constant> или
  174. не передана, то страница <acronym>MVC</acronym>
  175. будет сверять свои свойства с объектом запроса во
  176. время вызова <code>$page->isActive()</code>.
  177. </entry>
  178. </row>
  179. <row>
  180. <entry><code>visible</code></entry>
  181. <entry><code>bool</code></entry>
  182. <entry><constant>TRUE</constant></entry>
  183. <entry>
  184. Должна ли страница быть видимой для пользователя
  185. или просто быть частью структуры.
  186. Невидимые страницы пропускаются в помощниках видов.
  187. </entry>
  188. </row>
  189. <row>
  190. <entry><code>pages</code></entry>
  191. <entry><type>Array</type> | <classname>Zend_Config</classname> | <constant>NULL</constant></entry>
  192. <entry><constant>NULL</constant></entry>
  193. <entry>
  194. Дочерние по отношению к данной страницы.
  195. Это может быть массив или объект
  196. <classname>Zend_Config</classname>, содержащий
  197. либо опции страниц, которые могут быть переданы
  198. фабричному методу, либо сами экземпляры
  199. <classname>Zend_Navigation_Page</classname>.
  200. Массивы опций страниц и объекты
  201. <classname>Zend_Navigation_Page</classname> могут
  202. комбинироваться друг с другом.
  203. </entry>
  204. </row>
  205. </tbody>
  206. </tgroup>
  207. </table>
  208. <note>
  209. <title>Пользовательские свойства</title>
  210. <para>
  211. Все страницы поддерживают установку и получение пользовательских
  212. свойств путем использования "магических" методов
  213. <methodname>__set($name, $value)</methodname>,
  214. <methodname>__get($name)</methodname>,
  215. <methodname>__isset($name)</methodname> и
  216. <methodname>__unset($name)</methodname>.
  217. Пользовательские свойства
  218. могут иметь любые значения и будут включаться в массив, возвращаемый
  219. методом <code>$page->toArray()</code>. Последнее значит,
  220. что страницы могут успешно подвергаться сериализации/десериализации
  221. даже в том случае, если они содержат свойства, не определенные
  222. в классе страницы.
  223. </para>
  224. <para>
  225. Как предопределенные, так и пользовательские свойства могут
  226. устанавливаться через метод
  227. <code>$page->set($name, $value)</code> и извлекаться
  228. через метод <code>$page->get($name)</code>, также можно
  229. использовать "магические" методы.
  230. </para>
  231. </note>
  232. <example id="zend.navigation.pages.common.example.customprops">
  233. <title>Пользовательские свойства страницы</title>
  234. <para>
  235. Данный пример показывает, как могут использоваться
  236. пользовательские свойства.
  237. </para>
  238. <programlisting language="php"><![CDATA[
  239. $page = new Zend_Navigation_Page_Mvc();
  240. $page->foo = 'bar';
  241. $page->meaning = 42;
  242. echo $page->foo;
  243. if ($page->meaning != 42) {
  244. // должны быть какие-либо действия
  245. }
  246. ]]></programlisting>
  247. </example>
  248. </sect2>