O uso básico do Zend_Layout
é bastante trivial. Assumindo que você já
está usando Zend_Application
, você pode simplesmente fornecer algumas
opções de configuração e criar um script de vizualização para o layout.
A localização recomendada dos layouts é no subdiretório
"layouts/scripts/
" de sua aplicação:
application |-- Bootstrap.php |-- configs | `-- application.ini |-- controllers |-- layouts | `-- scripts | |-- layout.phtml
Para inicializar o Zend_Layout
, adicione o seguinte no seu
arquivo de configuração ("application/configs/application.ini
"):
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" resources.layout.layout = "layout"
A primeira linha indica onde procurar pelos scripts de layout; a segunda linha dá o
nome do layout a ser usado, menos a extensão do script de vizualização (que é assumida
como ".phtml
" por padrão).
Agora que você tem suas configurações no lugar, você precisa criar seu script de layout.
Primeiro tenha certeza de que você criou o diretório
"application/layouts/scripts
"; depois abra um editor e crie as
marcações para o seu layout. Scripts de layout são simplesmente scripts de vizualização,
com algumas pequenas diferenças.
<html> <head> <title>Meu Site</title> </head> <body> <?php echo $this->layout()->content ?> </body> </html>
No exemplo acima, você notará a chamada de um assitente de vizualização
layout()
. Quando você registra o recurso
Zend_Layout
, você também ganha acesso a uma ação e ao assistente
de vizualização que permitem a você acesso à instância
Zend_Layout
; você pode então chamar operações no objeto layout.
Neste caso, nós estamos recuperando uma variável chamada $content
, e
imprimindo ela. Por padrão, a variável $content
é populada por você
pelo script de vizualização da aplicação renderizado. Por outro lado, nada que você
normalmente faça em um script de vizualização é perfeitamente válido -- chamar quaisquer
assistentes ou métodos de vizualização que você desejar.
Neste ponto, você tem um script de vizualização funcionando e sua aplicação é informada de sua localização e sabe como renderizá-lo.
De vez em quando, você pode precisar de acesso direto ao objeto layout. Há três modos de fazer isso:
-
Dentro dos scripts de vizualização: use o assistente de vizualização
layout()
, que retorna a instânciaZend_Layout
registrada com o plugin controlador frontal.<?php $layout = $this->layout(); ?>
Uma vez que retornar a instância layout, você pode também simplesmente chamar os métodos nele, ao invés de atribuir ela a uma variável.
-
Dentro dos controladores de ação: use o assitente de ação
layout()
, que atua apenas como um assistente de vizualização.// Chamando assistente como um método de corretor de ajuda. $layout = $this->_helper->layout(); // Ou, mais detalhadamente: $helper = $this->_helper->getHelper('Layout'); $layout = $helper->getLayoutInstance();
Assim como no assitente de vizualização, desde que o assistente de ação retorne a instância layout, você pode também simplesmente chamar métodos nele, ao invés de atribuir a ele variáveis.
-
Em outro lugar: use o método estático
getMvcInstance()
. Isso retornará a instância layout registrada pelo recurso de inicialização da aplicação.$layout = Zend_Layout::getMvcInstance();
-
Via inicialização da aplicação: recupera o recurso layout, que será a instância
Zend_Layout
.$layout = $bootstrap->getResource('Layout');
Em qualquer lugar que você tenha acesso ao objeto inicialização da aplicação, neste método é preferível usar o método estático
getMvcInstance()
.
Na maioria dos casos, a configuração acmia e o script layout (com modificações) lhe darão o que você precisa. Porém, existe algumas outras funcionalidades que você provavelmente vai usar mais cedo ou mais tarde. Nos exemplos seguintes, você pode usar um dos métodos listados acima para recuperar o objeto layout.
-
Configurando vairáveis layout. O
Zend_Layout
mantém o seu próprio registro das variáveis de visualização específicas de layout que você pode acessar; a chave$content
observada no exemplo de script de layout inicial é um exemplo. Você pode atribuir e recuperá-las usando acesso normal, ou via métodoassign()
.// Configuração de conteúdo: $layout->somekey = "foo" // Imprimindo esse mesmo conteúdo: echo $layout->somekey; // 'foo' // Usando o método assign(): $layout->assign('someotherkey', 'bar'); // Acesso às variáveis assign()'d permanece o mesmo: echo $layout->someotherkey; // 'bar'
-
disableLayout()
. Ocasionalmente, você pode querer desabilitar layouts; por exemplo, quando responder um pedido Ajax, ou fornecer uma representação RESTful de um recurso. Nesses casos, você pode chamar o métododisableLayout()
no seu objeto layout.$layout->disableLayout();
O contrário deste método é, claro, o
enableLayout()
, que pode ser chamado a qualquer hora para reabilitar layouts para a ação solicitada. -
Selecionando um layout alternativo: se você possui layouts múltiplos para o seu site ou aplicação, você pode selecionar o layout a ser usado a qualquer hora simplesmente chamando o método
setLayout()
. Chame ele especificando o nome do script de layout sem o sufixo do arquivo.// Use o script de layout "alternate.phtml": $layout->setLayout('alternate');
O script de layout deve encontrar-se no diretório
$layoutPath
especificado nas suas configurações. OZend_Layout
irá então usar esse novo layout quando renderizar.