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');

Exemplo 490. 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.


Exemplo 491. 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().


Exemplo 492. 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');