| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.layout.options">
- <title>Опции конфигурирования Zend_Layout</title>
- <para>
- <classname>Zend_Layout</classname> имеет свой набор конфигурационных опций. Они
- могут быть установлены путем вызова соответствующих аксессоров, путем
- передачи массива или объекта <classname>Zend_Config</classname> конструктору или
- методу <methodname>startMvc()</methodname>, передачей массива опций методу
- <methodname>setOptions()</methodname> или передачей объекта
- <classname>Zend_Config</classname> методу <methodname>setConfig()</methodname>.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>layout</emphasis>: используемый макет. Использует текущий инфлектор для
- определения пути к скрипту макета, соответствующего данному имени макета.
- По умолчанию используется имя 'layout', и оно соответствует скрипту
- '<filename>layout.phtml</filename>'. Аксессоры -
- <methodname>setLayout()</methodname> и <methodname>getLayout()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>layoutPath</emphasis>: базовый путь к скрипту макета.
- Аксессоры: <methodname>setLayoutPath()</methodname> и
- <methodname>getLayoutPath()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>contentKey</emphasis>: переменная макета, используемая для содержимого по
- умолчанию (при использовании с компонентами <acronym>MVC</acronym>). Значением по
- умолчанию является 'content'. Аксессоры - <methodname>setContentKey()</methodname> и
- <methodname>getContentKey()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>mvcSuccessfulActionOnly</emphasis>: действует при
- использовании с компонентами <acronym>MVC</acronym>. Если действие бросает
- исключение, и этот флаг установлен в true, то рендеринг макета
- не будет произведен (это сделано для предотвращения повторного
- рендеринга макета при использовании
- <link linkend="zend.controller.plugins.standard.errorhandler">плагина
- ErrorHandler</link>). По умолчанию он установлен в <constant>TRUE</constant>.
- Аксессоры - <methodname>setMvcSuccessfulActionOnly()</methodname> и
- <methodname>getMvcSuccessfulActionOnly()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>view</emphasis>: объект вида, используемый для рендеринга. При
- использовании с компонентами <acronym>MVC</acronym>,
- <classname>Zend_Layout</classname> будет пытаться использовать объект вида,
- зарегистрированный в <link linkend="zend.controller.actionhelpers.viewrenderer">
- ViewRenderer</link>, если объект вида не был передан явным образом. Аксессоры -
- <methodname>setView()</methodname> и <methodname>getView()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>helperClass</emphasis>: класс помощника действия, применяемый при
- использовании <classname>Zend_Layout</classname> с компонентами
- <acronym>MVC</acronym>. По умолчанию это
- <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>.
- Аксессоры - <methodname>setHelperClass()</methodname> и
- <methodname>getHelperClass()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>pluginClass</emphasis>: класс плагина фронт-контроллера, применяемый
- при использовании
- <classname>Zend_Layout</classname> с компонентами <acronym>MVC</acronym>. По
- умолчанию это <classname>Zend_Layout_Controller_Plugin_Layout</classname>.
- Аксессоры - <methodname>setPluginClass()</methodname> и
- <methodname>getPluginClass()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>inflector</emphasis>: инфлектор, используемый для
- определения путей к скрипту вида по имени макета, подробнее об
- этом читайте в <link linkend="zend.layout.advanced.inflector">документации по
- инфлектору <classname>Zend_Layout</classname></link>.
- Аксессоры - <methodname>setInflector()</methodname>
- и <methodname>getInflector()</methodname>.
- </para>
- </listitem>
- </itemizedlist>
- <note>
- <title>helperClass и pluginClass должны передаваться startMvc()</title>
- <para>
- Для того чтобы установка опций <property>helperClass</property> и
- <property>pluginClass</property> произвела нужный эффект, эти опции должны
- быть переданы методу <methodname>startMvc()</methodname>. Если они
- устанавливаются позже, то это не произведет нужного действия.
- </para>
- </note>
- <sect2 id="zend.layout.options.examples">
- <title>Примеры</title>
- <para>
- Следующие примеры предполагают наличие следующих массива опций
- <varname>$options</varname> и объекта конфигурации <varname>$config</varname>:
- </para>
- <programlisting language="php"><![CDATA[
- $options = array(
- 'layout' => 'foo',
- 'layoutPath' => '/path/to/layouts',
- 'contentKey' => 'CONTENT', // игнорируется, если не используется MVC
- );
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- /**
- [layout]
- layout = "foo"
- layoutPath = "/path/to/layouts"
- contentKey = "CONTENT"
- */
- $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
- ]]></programlisting>
- <example id="zend.layout.options.examples.constructor">
- <title>Передача опций конструктору или startMvc()</title>
- <para>
- Как конструктор, так и статический метод <methodname>startMvc()</methodname>
- могут принимать массив опций или объект <classname>Zend_Config</classname>
- с опциями для конфигурирования экземпляра
- <classname>Zend_Layout</classname>.
- </para>
- <para>
- Передача массива:
- </para>
- <programlisting language="php"><![CDATA[
- // Использование конструктора:
- $layout = new Zend_Layout($options);
- // Использование startMvc():
- $layout = Zend_Layout::startMvc($options);
- ]]></programlisting>
- <para>
- Использование объекта конфигурации:
- </para>
- <programlisting language="php"><![CDATA[
- $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
- // Использование конструктора:
- $layout = new Zend_Layout($config);
- // Использование startMvc():
- $layout = Zend_Layout::startMvc($config);
- ]]></programlisting>
- <para>
- Как правило, это наиболее легкий способ настройки экземпляра
- <classname>Zend_Layout</classname>.
- </para>
- </example>
- <example id="zend.layout.options.examples.setoptionsconfig">
- <title>Использование setOption() и setConfig()</title>
- <para>
- Иногда нужно сконфигурировать объект <classname>Zend_Layout</classname>
- после того, как он уже был инстанцирован. Методы
- <methodname>setOptions()</methodname> и <methodname>setConfig()</methodname>
- позволяют сделать это легко и быстро:
- </para>
- <programlisting language="php"><![CDATA[
- // Использование массива опций:
- $layout->setOptions($options);
- // Использование объекта Zend_Config:
- $layout->setConfig($options);
- ]]></programlisting>
- <para>
- Но следует иметь в виду, что некоторые опции, такие, как
- <property>pluginClass</property> и <property>helperClass</property> не будут
- действовать, если были переданы с использованием этих методов,
- их следует передавать конструктору или методу
- <methodname>startMvc()</methodname>.
- </para>
- </example>
- <example id="zend.layout.options.examples.accessors">
- <title>Использование аксессоров</title>
- <para>
- И наконец, вы можете конфигурировать свой экземпляр
- <classname>Zend_Layout</classname> с помощью аксессоров. Все аксессоры реализуют
- fluent interface, это значит, что их вызовы могут следовать непосредственно друг
- за другом:
- </para>
- <programlisting language="php"><![CDATA[
- $layout->setLayout('foo')
- ->setLayoutPath('/path/to/layouts')
- ->setContentKey('CONTENT');
- ]]></programlisting>
- </example>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|