Olá pessoal!
Nesse post eu mostrarei para você como usar uma variável de uma determinada view em outra view puxada pelo layout do seu site.
Fazendo o TCC da faculdade que é um sistema em ZF2 (ZendFramework 2), me deparei com uma dificuldade ao tentar integrar certas partes do template. No template que comprei e estou adaptando temos duas seções, uma seção para o título juntamente com os breadcrumbs e outra para o conteúdo. Essas sessões são distintas no código.
A solução normal é definir que a seção para o título e breadcrumb façam parte de um arquivo partials, o qual chamei de headerConteudo.phtml (view/partials/headerConteudo.phtml). Também para o conteúdo da view, a qual vem do Controller (no meu caso o controller é o IndexController e a Action é indexAction), geralmente colocamos no layout (view/layout.phtml na estrutura padrão do ZF2 ) o seguinte código $this->content. Pronto, o conteúdo da view será exibido no local especificado no layout (minha view estava em view/application/index/index.phtml).
Porém, por se tratarem de duas views diferentes (a view/partials/headerConteudo.phtml e a view/application/index/index.phtml), a view configurada no controller (a index.phtml) e no layout por $this->content; é a que receberá quaisquer variáveis enviadas pelo próprio controller.
Mas há uma forma de no layout conseguirmos pegar esses dados enviados pelo controller e enviar para a outra view ou partial. Veja abaixo como eu fiz:
viewModel ()->getCurrent ()->getChildren ();
$conteudo = $conteudo [0];
echo $this->partial ( "partials/headerConteudo.phtml", array ( "tituloPagina" => $conteudo->tituloPagina ) ); ?>;
content; ?>
É isso aí pessoal, espero que tenham entendido e que eu tenha os ajudado.
Fonte:
Blog do Rob Allen (em inglês) – http://akrabat.com/access-view-variables-in-another-view-model/. Acesso em 03/03/2015.