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()
egetLayout()
. -
layoutPath: o caminho base para os view scripts de layout. Os acessores são
setLayoutPath()
egetLayoutPath()
. -
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()
egetContentKey()
. -
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ãosetMvcSuccessfulActionOnly()
egetMvcSuccessfulActionOnly()
. -
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ãosetView()
egetView()
. -
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ãosetHelperClass()
egetHelperClass()
. -
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ãosetPluginClass()
egetPluginClass()
. -
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ãosetInflector()
egetInflector()
.
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.
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');