<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.layout.options">
    <title>Opções de Configuração Zend_Layout</title>

    <para>
        <classname>Zend_Layout</classname> tem uma variedade de opções de configuração. Essas
        podem ser configuradas chamando os acessores apropriados, passando uma matriz ou objeto
        <classname>Zend_Config</classname> para o construtor ou
        <methodname>startMvc()</methodname>, passando uma matriz de opções para
        <methodname>setOptions()</methodname>, ou passando um objeto
        <classname>Zend_Config</classname> para <methodname>setConfig()</methodname>.
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <emphasis>layout</emphasis>: o layout a ser usado. Utiliza o inflector atual para
                resolver o nome fornecido para o view script de layout apropriado. Por padrão,
                esse valor é 'layout' e resolve para 'layout.phtml'. Os acessores são
                <methodname>setLayout()</methodname> e <methodname>getLayout()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>layoutPath</emphasis>: o caminho base para os view scripts
                de layout. Os acessores são <methodname>setLayoutPath()</methodname> e
                <methodname>getLayoutPath()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>contentKey</emphasis>: a variável de layout usada para o conteúdo
                padrão (quando usado com o <acronym>MVC</acronym>). O valor padrão é 'content'.
                Os acessores são <methodname>setContentKey()</methodname> e
                <methodname>getContentKey()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>mvcSuccessfulActionOnly</emphasis>: quando usar o
                <acronym>MVC</acronym>, se uma ação lança uma exceção e esse marco
                é <constant>TRUE</constant>, o layout não será renderizado (isso é para
                prevenir dupla renderização do layout quando o <link
                linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler plugin</link>
                estiver em uso). Por padrão, o marco é <constant>TRUE</constant>. Os acessores são
                <methodname>setMvcSuccessfulActionOnly()</methodname> e
                <methodname>getMvcSuccessfulActionOnly()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>view</emphasis>: O objeto view para ser usado na renderização.
                Quando usado com o <acronym>MVC</acronym>, <classname>Zend_Layout</classname>
                tentará usar o objeto view registrado com o
                <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
                se nenhum objeto view tiver sido passado explicitamente. Os acessores são
                <methodname>setView()</methodname> e <methodname>getView()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>helperClass</emphasis>: a classe action helper para usar quando
                <classname>Zend_Layout</classname> estiver utilizando os componentes
                <acronym>MVC</acronym>. Por padrão, ela é
                <classname>Zend_Layout_Controller_Action_Helper_Layout</classname>.
                Os acessores são <methodname>setHelperClass()</methodname> e
                <methodname>getHelperClass()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>pluginClass</emphasis>: a classe front controller plugin para usar
                quando <classname>Zend_Layout</classname> estiver utilizando os componentes
                <acronym>MVC</acronym>. Por padrão, ela é
                <classname>Zend_Layout_Controller_Plugin_Layout</classname>. Os acessores são
                <methodname>setPluginClass()</methodname> e
                <methodname>getPluginClass()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>inflector</emphasis>: o inflector a ser usado quando resolver
                nomes para caminhos de view scripts de layout; veja
                <link linkend="zend.layout.advanced.inflector">a documentação
                <classname>Zend_Layout</classname> inflector para mais detalhes</link>. Os
                acessores são <methodname>setInflector()</methodname> e
                <methodname>getInflector()</methodname>.
            </para>
        </listitem>
    </itemizedlist>

    <note>
        <title>helperClass e pluginClass devem ser passados para startMvc()</title>

        <para>
            Para que as configurações <property>helperClass</property> e
            <property>pluginClass</property> tenham efeito, elas devem ser passadas como opções para
            <methodname>startMvc()</methodname>; se forem configuradas mais tarde,
            elas não tem efeito.
        </para>
    </note>

    <sect2 id="zend.layout.options.examples">
        <title>Exemplos</title>

        <para>
            Os seguintes exemplos assumem a seguinte matriz <varname>$options</varname>
            e objeto <varname>$config</varname>:
        </para>

        <programlisting language="php"><![CDATA[
$options = array(
    'layout'     => 'foo',
    'layoutPath' => '/path/to/layouts',
    'contentKey' => 'CONTENT',           // ignorado quando o MVC não é usado
);
]]></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>Passando opções para o construtor ou startMvc()</title>

            <para>
                Tanto o construtor quanto o método estático <methodname>startMvc()</methodname>
                podem aceitar tanto uma matriz de opções quanto um objeto
                <classname>Zend_Config</classname> com opções de modo a configurar
                a instância de <classname>Zend_Layout</classname>.
            </para>

            <para>Primeiro, dê uma olhada na passagem de uma matriz:</para>

            <programlisting language="php"><![CDATA[
// Usando um construtor:
$layout = new Zend_Layout($options);

// Usando startMvc():
$layout = Zend_Layout::startMvc($options);
]]></programlisting>

            <para>E agora usando um objeto config:</para>

            <programlisting language="php"><![CDATA[
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

// Usando construtor:
$layout = new Zend_Layout($config);

// Usando startMvc():
$layout = Zend_Layout::startMvc($config);
]]></programlisting>

            <para>
                Basicamente, esse é o modo mais fácil de customizar sua instância
                <classname>Zend_Layout</classname>.
            </para>
        </example>

        <example id="zend.layout.options.examples.setoptionsconfig">
            <title>Usando setOption() e setConfig()</title>

            <para>
                Algumas vezes você precisa configurar o objeto <classname>Zend_Layout</classname>
                depois que ele já foi instanciado; <methodname>setOptions()</methodname> e
                <methodname>setConfig()</methodname> dão a você um modo fácil
                e rápido de fazer isso:
            </para>

            <programlisting language="php"><![CDATA[
// Usando uma matriz de opções:
$layout->setOptions($options);

// Usando um objeto Zend_Config:
$layout->setConfig($options);
]]></programlisting>

            <para>
                Note, entretanto, que certas opções, tais como <property>pluginClass</property> e
                <property>helperClass</property>, não serão afetadas quando a passagem for feita
                por esse método; elas precisam ser passadas ao construtor ou método
                <methodname>startMvc()</methodname>.
            </para>
        </example>

        <example id="zend.layout.options.examples.accessors">
            <title>Usando Acessores</title>

            <para>
                Finalmente, você pode também configurar sua instância
                <classname>Zend_Layout</classname> via acessores. Todos os acessores
                implementam uma interface fluente, significando que suas chamadas
                podem ser encadeadas:
            </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:
-->
