Zend_Layout-Options.xml 11 KB

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