2
0

Zend_Layout-Options.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <sect1 id="zend.layout.options">
  2. <title>Опции конфигурирования Zend_Layout</title>
  3. <para>
  4. <code>Zend_Layout</code> имеет свой набор конфигурационных опций. Они
  5. могут быть установлены путем вызова соответствующих аксессоров, путем
  6. передачи массива или объекта <code>Zend_Config</code> конструктору или
  7. методу <code>startMvc()</code>, передачей массива опций методу
  8. <code>setOptions()</code> или передачей объекта <code>Zend_Config</code>
  9. методу <code>setConfig()</code>.
  10. </para>
  11. <itemizedlist>
  12. <listitem><para>
  13. <emphasis>layout</emphasis>: используемый макет. Использует
  14. текущий инфлектор для определения пути к скрипту макета,
  15. соответствующего данному имени макета. По умолчанию используется имя 'layout', и оно соответствует скрипту
  16. 'layout.phtml'. Аксессоры - <code>setLayout()</code> и
  17. <code>getLayout()</code>.
  18. </para></listitem>
  19. <listitem><para>
  20. <emphasis>layoutPath</emphasis>: базовый путь к скрипту макета.
  21. Аксессоры: <code>setLayoutPath()</code> и
  22. <code>getLayoutPath()</code>.
  23. </para></listitem>
  24. <listitem><para>
  25. <emphasis>contentKey</emphasis>: переменная макета, используемая
  26. для содержимого по умолчанию (при использовании с компонентами
  27. MVC). Значением по умолчанию является 'content'. Аксессоры -
  28. <code>setContentKey()</code> и
  29. <code>getContentKey()</code>.
  30. </para></listitem>
  31. <listitem><para>
  32. <emphasis>mvcSuccessfulActionOnly</emphasis>: действует при
  33. использовании с компонентами MVC. Если действие бросает
  34. исключение, и этот флаг установлен в true, то рендеринг макета
  35. не будет произведен (это сделано для предотвращения повторного
  36. рендеринга макета при использовании
  37. <link linkend="zend.controller.plugins.errorhandler">плагина
  38. ErrorHandler</link>). По умолчанию он установлен в true.
  39. Аксессоры - <code>setMvcSuccessfulActionOnly()</code> и
  40. <code>getMvcSuccessfulActionOnly()</code>.
  41. </para></listitem>
  42. <listitem><para>
  43. <emphasis>view</emphasis>: объект вида, используемый для
  44. рендеринга. При использовании с компонентами MVC
  45. <code>Zend_Layout</code> будет пытаться использовать объект
  46. вида, зарегистрированный в
  47. <link
  48. linkend="zend.controller.actionhelpers.viewrenderer"> ViewRenderer</link>, если объект вида не был передан явным
  49. образом. Аксессоры - <code>setView()</code> и
  50. <code>getView()</code>.
  51. </para></listitem>
  52. <listitem><para>
  53. <emphasis>helperClass</emphasis>: класс помощника действия,
  54. применяемый при использовании <code>Zend_Layout</code> с
  55. компонентами MVC. По умолчанию это
  56. <code>Zend_Layout_Controller_Action_Helper_Layout</code>.
  57. Аксессоры - <code>setHelperClass()</code> и
  58. <code>getHelperClass()</code>.
  59. </para></listitem>
  60. <listitem><para>
  61. <emphasis>pluginClass</emphasis>: класс плагина
  62. фронт-контроллера, применяемый при использовании
  63. <code>Zend_Layout</code> с компонентами MVC. По умолчанию это
  64. <code>Zend_Layout_Controller_Plugin_Layout</code>. Аксессоры -
  65. <code>setPluginClass()</code> и
  66. <code>getPluginClass()</code>.
  67. </para></listitem>
  68. <listitem><para>
  69. <emphasis>inflector</emphasis>: инфлектор, используемый для
  70. определения путей к скрипту вида по имени макета, подробнее об
  71. этом читайте в <link
  72. linkend="zend.layout.advanced.inflector">документации по инфлектору <code>Zend_Layout</code></link>.
  73. Аксессоры - <code>setInflector()</code>
  74. и <code>getInflector()</code>.
  75. </para></listitem>
  76. </itemizedlist>
  77. <note>
  78. <title>helperClass и pluginClass должны передаваться startMvc()</title>
  79. <para>
  80. Для того чтобы установка опций <code>helperClass</code> и
  81. <code>pluginClass</code> произвела нужный эффект, эти опции должны
  82. быть переданы методу <code>startMvc()</code>. Если они
  83. устанавливаются позже, то это не произведет нужного действия.
  84. </para>
  85. </note>
  86. <sect2 id="zend.layout.options.examples">
  87. <title>Примеры</title>
  88. <para>
  89. Следующие примеры предполагают наличие следующих массива опций и
  90. объекта конфигурации:
  91. </para>
  92. <programlisting language="php"><![CDATA[<?php
  93. $options = array(
  94. 'layout' => 'foo',
  95. 'layoutPath' => '/path/to/layouts',
  96. 'contentKey' => 'CONTENT', // игнорируется, если не используется MVC
  97. );
  98. ?>]]></programlisting>
  99. <programlisting language="php"><![CDATA[<?php
  100. /**
  101. [layout]
  102. layout = "foo"
  103. layoutPath = "/path/to/layouts"
  104. contentKey = "CONTENT"
  105. */
  106. $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
  107. ?>]]></programlisting>
  108. <example id="zend.layout.options.examples.constructor">
  109. <title>Передача опций конструктору или startMvc()</title>
  110. <para>
  111. Как конструктор, так и статический метод <code>startMvc()</code>
  112. могут принимать массив опций или объект <code>Zend_Config</code>
  113. с опциями для конфигурирования экземпляра
  114. <code>Zend_Layout</code>.
  115. </para>
  116. <para>
  117. Передача массива:
  118. </para>
  119. <programlisting language="php"><![CDATA[<?php
  120. // Использование конструктора:
  121. $layout = new Zend_Layout($options);
  122. // Использование startMvc():
  123. $layout = Zend_Layout::startMvc($options);
  124. ?>]]></programlisting>
  125. <para>
  126. Использование объекта конфигурации:
  127. </para>
  128. <programlisting language="php"><![CDATA[<?php
  129. $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
  130. // Использование конструктора:
  131. $layout = new Zend_Layout($config);
  132. // Использование startMvc():
  133. $layout = Zend_Layout::startMvc($config);
  134. ?>]]></programlisting>
  135. <para>
  136. Как правило, это наиболее легкий способ настройки экземпляра
  137. <code>Zend_Layout</code>.
  138. </para>
  139. </example>
  140. <example id="zend.layout.options.examples.setoptionsconfig">
  141. <title>Использование setOption() и setConfig()</title>
  142. <para>
  143. Иногда нужно сконфигурировать объект <code>Zend_Layout</code>
  144. после того, как он уже был инстанцирован. Методы
  145. <code>setOptions()</code> и <code>setConfig()</code> позволяют
  146. сделать это легко и быстро:
  147. </para>
  148. <programlisting language="php"><![CDATA[<?php
  149. // Использование массива опций:
  150. $layout->setOptions($options);
  151. // Использование объекта Zend_Config:
  152. $layout->setConfig($options);
  153. ?>]]></programlisting>
  154. <para>
  155. Но следует иметь в виду, что некоторые опции, такие, как
  156. <code>pluginClass</code> и <code>helperClass</code> не будут
  157. действовать, если были переданы с использованием этих методов,
  158. их следует передавать конструктору или методу
  159. <code>startMvc()</code>.
  160. </para>
  161. </example>
  162. <example id="zend.layout.options.examples.accessors">
  163. <title>Использование аксессоров</title>
  164. <para>
  165. И наконец, вы можете конфигурировать свой экземпляр с
  166. помощью аксессоров. Все аксессоры реализуют fluent
  167. interface, это значит, что их вызовы могут следовать
  168. непосредственно друг за другом:
  169. </para>
  170. <programlisting language="php"><![CDATA[<?php
  171. $layout->setLayout('foo')
  172. ->setLayoutPath('/path/to/layouts')
  173. ->setContentKey('CONTENT');
  174. ?>]]></programlisting>
  175. </example>
  176. </sect2>
  177. </sect1>
  178. <!--
  179. vim:se ts=4 sw=4 et:
  180. -->