[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ru / module_specs / Zend_Layout-Options.xml
blobbf7e7ade3d6d7ecbee6fb43302a864f9f8491c77
1 <sect1 id="zend.layout.options">
2     <title>Опции конфигурирования Zend_Layout</title>
4     <para>
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>.
11     </para>
13     <itemizedlist>
14         <listitem><para>
15                 <emphasis>layout</emphasis>: используемый макет. Использует
16                 текущий инфлектор для определения пути к скрипту макета,
17                 соответствующего данному имени макета. По умолчанию используется имя 'layout', и оно соответствует скрипту
18                 'layout.phtml'. Аксессоры - <code>setLayout()</code> и
19                 <code>getLayout()</code>.
20         </para></listitem>
22         <listitem><para>
23                 <emphasis>layoutPath</emphasis>: базовый путь к скрипту макета.
24                 Аксессоры: <code>setLayoutPath()</code> и
25                 <code>getLayoutPath()</code>.
26         </para></listitem>
28         <listitem><para>
29                 <emphasis>contentKey</emphasis>: переменная макета, используемая
30                 для содержимого по умолчанию (при использовании с компонентами
31                 MVC). Значением по умолчанию является 'content'. Аксессоры -
32                 <code>setContentKey()</code> и
33                 <code>getContentKey()</code>.
34         </para></listitem>
36         <listitem><para>
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>.
46         </para></listitem>
48         <listitem><para>
49                 <emphasis>view</emphasis>: объект вида, используемый для
50                 рендеринга. При использовании с компонентами MVC
51                 <code>Zend_Layout</code> будет пытаться использовать объект
52                 вида, зарегистрированный в
53                 <link
54                     linkend="zend.controller.actionhelpers.viewrenderer"> ViewRenderer</link>, если объект вида не был передан явным
55                     образом. Аксессоры - <code>setView()</code> и
56                 <code>getView()</code>.
57         </para></listitem>
59         <listitem><para>
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>.
66         </para></listitem>
68         <listitem><para>
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>.
75         </para></listitem>
77         <listitem><para>
78                 <emphasis>inflector</emphasis>: инфлектор, используемый для
79                 определения путей к скрипту вида по имени макета, подробнее об
80                 этом читайте в <link
81                     linkend="zend.layout.advanced.inflector">документации по инфлектору <code>Zend_Layout</code></link>.
82                 Аксессоры - <code>setInflector()</code>
83                 и <code>getInflector()</code>.
84         </para></listitem>
85     </itemizedlist>
87     <note>
88         <title>helperClass и pluginClass должны передаваться startMvc()</title>
90         <para>
91             Для того чтобы установка опций <code>helperClass</code> и
92             <code>pluginClass</code> произвела нужный эффект, эти опции должны
93             быть переданы методу <code>startMvc()</code>. Если они
94             устанавливаются позже, то это не произведет нужного действия.
95         </para>
96     </note>
98     <sect2 id="zend.layout.options.examples">
99         <title>Примеры</title>
101         <para>
102             Следующие примеры предполагают наличие следующих массива опций и
103             объекта конфигурации:
104         </para>
106         <programlisting language="php"><![CDATA[<?php
107 $options = array(
108     'layout'     => 'foo',
109     'layoutPath' => '/path/to/layouts',
110     'contentKey' => 'CONTENT',  // игнорируется, если не используется MVC
112 ?>]]></programlisting>
114         <programlisting language="php"><![CDATA[<?php
116 [layout]
117 layout = "foo"
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>
127             <para>
128                 Как конструктор, так и статический метод <code>startMvc()</code>
129                 могут принимать массив опций или объект <code>Zend_Config</code>
130                 с опциями для конфигурирования экземпляра
131                 <code>Zend_Layout</code>.
132             </para>
134             <para>
135                 Передача массива:
136             </para>
138             <programlisting language="php"><![CDATA[<?php
139 // Использование конструктора:
140 $layout = new Zend_Layout($options);
142 // Использование startMvc():
143 $layout = Zend_Layout::startMvc($options);
144 ?>]]></programlisting>
146             <para>
147                 Использование объекта конфигурации:
148             </para>
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>
160             <para>
161                 Как правило, это наиболее легкий способ настройки экземпляра
162                 <code>Zend_Layout</code>.
163             </para>
164         </example>
166         <example id="zend.layout.options.examples.setoptionsconfig">
167             <title>Использование setOption() и setConfig()</title>
169             <para>
170                 Иногда нужно сконфигурировать объект <code>Zend_Layout</code>
171                 после того, как он уже был инстанцирован. Методы
172                 <code>setOptions()</code> и <code>setConfig()</code> позволяют
173                 сделать это легко и быстро:
174             </para>
176             <programlisting language="php"><![CDATA[<?php
177 // Использование массива опций:
178 $layout->setOptions($options);
180 // Использование объекта Zend_Config:
181 $layout->setConfig($options);
182 ?>]]></programlisting>
184             <para>
185                 Но следует иметь в виду, что некоторые опции, такие, как
186                 <code>pluginClass</code> и <code>helperClass</code> не будут
187                 действовать, если были переданы с использованием этих методов,
188                 их следует передавать конструктору или методу
189                 <code>startMvc()</code>.
190             </para>
191         </example>
193         <example id="zend.layout.options.examples.accessors">
194             <title>Использование аксессоров</title>
196             <para>
197                 И наконец, вы можете конфигурировать свой экземпляр с
198                 помощью аксессоров. Все аксессоры реализуют fluent
199                 interface, это значит, что их вызовы могут следовать
200                 непосредственно друг за другом:
201             </para>
203             <programlisting language="php"><![CDATA[<?php
204 $layout->setLayout('foo')
205        ->setLayoutPath('/path/to/layouts')
206        ->setContentKey('CONTENT');
207 ?>]]></programlisting>
208         </example>
209     </sect2>
210 </sect1>
211 <!--
212 vim:se ts=4 sw=4 et: