# Opções de Configuração Zend_Layout

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

- layout: 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 `setLayout()` e `getLayout()`.

- layoutPath: o caminho base para os view scripts de layout. Os acessores são `setLayoutPath()` e `getLayoutPath()`.

- contentKey: a variável de layout usada para o conteúdo padrão (quando usado com o MVC). O valor padrão é 'content'. Os acessores são `setContentKey()` e `getContentKey()`.

- mvcSuccessfulActionOnly: quando usar o MVC, se uma ação lança uma exceção e esse marco é `TRUE`, o layout não será renderizado (isso é para prevenir dupla renderização do layout quando o ErrorHandler plugin estiver em uso). Por padrão, o marco é `TRUE`. Os acessores são `setMvcSuccessfulActionOnly()` e `getMvcSuccessfulActionOnly()`.

- view: O objeto view para ser usado na renderização. Quando usado com o MVC, `Zend_Layout` tentará usar o objeto view registrado com o ViewRenderer se nenhum objeto view tiver sido passado explicitamente. Os acessores são `setView()` e `getView()`.

- helperClass: a classe action helper para usar quando `Zend_Layout` estiver utilizando os componentes MVC. Por padrão, ela é `Zend_Layout_Controller_Action_Helper_Layout`. Os acessores são `setHelperClass()` e `getHelperClass()`.

- pluginClass: a classe front controller plugin para usar quando `Zend_Layout` estiver utilizando os componentes MVC. Por padrão, ela é `Zend_Layout_Controller_Plugin_Layout`. Os acessores são `setPluginClass()` e `getPluginClass()`.

- inflector: o inflector a ser usado quando resolver nomes para caminhos de view scripts de layout; veja a documentação `Zend_Layout` inflector para mais detalhes. Os acessores são `setInflector()` e `getInflector()`.

## helperClass e pluginClass devem ser passados para startMvc()

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

## Exemplos

Os seguintes exemplos assumem a seguinte matriz `$options` e objeto `$config`:

    $options = array(
        'layout'     => 'foo',
        'layoutPath' => '/path/to/layouts',
        'contentKey' => 'CONTENT',           // ignorado quando o MVC não é usado
    );

    /**
    [layout]
    layout = "foo"
    layoutPath = "/path/to/layouts"
    contentKey = "CONTENT"
    */
    $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

### Passando opções para o construtor ou startMvc()

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

Primeiro, dê uma olhada na passagem de uma matriz:

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

    // Usando startMvc():
    $layout = Zend_Layout::startMvc($options);

E agora usando um objeto config:

    $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

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

    // Usando startMvc():
    $layout = Zend_Layout::startMvc($config);

Basicamente, esse é o modo mais fácil de customizar sua instância `Zend_Layout`.

### Usando setOption() e setConfig()

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

    // Usando uma matriz de opções:
    $layout->setOptions($options);

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

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

### Usando Acessores

Finalmente, você pode também configurar sua instância `Zend_Layout` via acessores. Todos os acessores implementam uma interface fluente, significando que suas chamadas podem ser encadeadas:

    $layout->setLayout('foo')
           ->setLayoutPath('/path/to/layouts')
           ->setContentKey('CONTENT');