1 <sect1 id="zend.layout.options">
2 <title>Опции конфигурирования Zend_Layout</title>
5 <code>Zend_Layout</code> имеет свой набор конфигурационных опций. Они
6 могут быть установлены путем вызова соответствующих аксессоров, путем
7 передачи массива или объекта <code>Zend_Config</code> конструктору или
8 методу <code>startMvc()</code>, передачей массива опций методу
9 <code>setOptions()</code> или передачей объекта <code>Zend_Config</code>
10 методу <code>setConfig()</code>.
15 <emphasis>layout</emphasis>: используемый макет. Использует
16 текущий инфлектор для определения пути к скрипту макета,
17 соответствующего данному имени макета. По умолчанию используется имя 'layout', и оно соответствует скрипту
18 'layout.phtml'. Аксессоры - <code>setLayout()</code> и
19 <code>getLayout()</code>.
23 <emphasis>layoutPath</emphasis>: базовый путь к скрипту макета.
24 Аксессоры: <code>setLayoutPath()</code> и
25 <code>getLayoutPath()</code>.
29 <emphasis>contentKey</emphasis>: переменная макета, используемая
30 для содержимого по умолчанию (при использовании с компонентами
31 MVC). Значением по умолчанию является 'content'. Аксессоры -
32 <code>setContentKey()</code> и
33 <code>getContentKey()</code>.
37 <emphasis>mvcSuccessfulActionOnly</emphasis>: действует при
38 использовании с компонентами MVC. Если действие бросает
39 исключение, и этот флаг установлен в true, то рендеринг макета
40 не будет произведен (это сделано для предотвращения повторного
41 рендеринга макета при использовании
42 <link linkend="zend.controller.plugins.errorhandler">плагина
43 ErrorHandler</link>). По умолчанию он установлен в true.
44 Аксессоры - <code>setMvcSuccessfulActionOnly()</code> и
45 <code>getMvcSuccessfulActionOnly()</code>.
49 <emphasis>view</emphasis>: объект вида, используемый для
50 рендеринга. При использовании с компонентами MVC
51 <code>Zend_Layout</code> будет пытаться использовать объект
52 вида, зарегистрированный в
54 linkend="zend.controller.actionhelpers.viewrenderer"> ViewRenderer</link>, если объект вида не был передан явным
55 образом. Аксессоры - <code>setView()</code> и
56 <code>getView()</code>.
60 <emphasis>helperClass</emphasis>: класс помощника действия,
61 применяемый при использовании <code>Zend_Layout</code> с
62 компонентами MVC. По умолчанию это
63 <code>Zend_Layout_Controller_Action_Helper_Layout</code>.
64 Аксессоры - <code>setHelperClass()</code> и
65 <code>getHelperClass()</code>.
69 <emphasis>pluginClass</emphasis>: класс плагина
70 фронт-контроллера, применяемый при использовании
71 <code>Zend_Layout</code> с компонентами MVC. По умолчанию это
72 <code>Zend_Layout_Controller_Plugin_Layout</code>. Аксессоры -
73 <code>setPluginClass()</code> и
74 <code>getPluginClass()</code>.
78 <emphasis>inflector</emphasis>: инфлектор, используемый для
79 определения путей к скрипту вида по имени макета, подробнее об
81 linkend="zend.layout.advanced.inflector">документации по инфлектору <code>Zend_Layout</code></link>.
82 Аксессоры - <code>setInflector()</code>
83 и <code>getInflector()</code>.
88 <title>helperClass и pluginClass должны передаваться startMvc()</title>
91 Для того чтобы установка опций <code>helperClass</code> и
92 <code>pluginClass</code> произвела нужный эффект, эти опции должны
93 быть переданы методу <code>startMvc()</code>. Если они
94 устанавливаются позже, то это не произведет нужного действия.
98 <sect2 id="zend.layout.options.examples">
99 <title>Примеры</title>
102 Следующие примеры предполагают наличие следующих массива опций и
103 объекта конфигурации:
106 <programlisting language="php"><![CDATA[<?php
109 'layoutPath' => '/path/to/layouts',
110 'contentKey' => 'CONTENT', // игнорируется, если не используется MVC
112 ?>]]></programlisting>
114 <programlisting language="php"><![CDATA[<?php
118 layoutPath = "/path/to/layouts"
119 contentKey = "CONTENT"
121 $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
122 ?>]]></programlisting>
124 <example id="zend.layout.options.examples.constructor">
125 <title>Передача опций конструктору или startMvc()</title>
128 Как конструктор, так и статический метод <code>startMvc()</code>
129 могут принимать массив опций или объект <code>Zend_Config</code>
130 с опциями для конфигурирования экземпляра
131 <code>Zend_Layout</code>.
138 <programlisting language="php"><![CDATA[<?php
139 // Использование конструктора:
140 $layout = new Zend_Layout($options);
142 // Использование startMvc():
143 $layout = Zend_Layout::startMvc($options);
144 ?>]]></programlisting>
147 Использование объекта конфигурации:
150 <programlisting language="php"><![CDATA[<?php
151 $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
153 // Использование конструктора:
154 $layout = new Zend_Layout($config);
156 // Использование startMvc():
157 $layout = Zend_Layout::startMvc($config);
158 ?>]]></programlisting>
161 Как правило, это наиболее легкий способ настройки экземпляра
162 <code>Zend_Layout</code>.
166 <example id="zend.layout.options.examples.setoptionsconfig">
167 <title>Использование setOption() и setConfig()</title>
170 Иногда нужно сконфигурировать объект <code>Zend_Layout</code>
171 после того, как он уже был инстанцирован. Методы
172 <code>setOptions()</code> и <code>setConfig()</code> позволяют
173 сделать это легко и быстро:
176 <programlisting language="php"><![CDATA[<?php
177 // Использование массива опций:
178 $layout->setOptions($options);
180 // Использование объекта Zend_Config:
181 $layout->setConfig($options);
182 ?>]]></programlisting>
185 Но следует иметь в виду, что некоторые опции, такие, как
186 <code>pluginClass</code> и <code>helperClass</code> не будут
187 действовать, если были переданы с использованием этих методов,
188 их следует передавать конструктору или методу
189 <code>startMvc()</code>.
193 <example id="zend.layout.options.examples.accessors">
194 <title>Использование аксессоров</title>
197 И наконец, вы можете конфигурировать свой экземпляр с
198 помощью аксессоров. Все аксессоры реализуют fluent
199 interface, это значит, что их вызовы могут следовать
200 непосредственно друг за другом:
203 <programlisting language="php"><![CDATA[<?php
204 $layout->setLayout('foo')
205 ->setLayoutPath('/path/to/layouts')
206 ->setContentKey('CONTENT');
207 ?>]]></programlisting>