No momento que escrevo estas linhas estou ciente que não falei p*$$@ nenhuma sobre Zend Navigation e a criação de menus, mas como na net tá lotado de tutoriais que já falam sobre isso, deixarei pra outro dia pra fazer minha própria versão.
Por hora, quero falar sobre o segundo passo sobre menu : como criar 2 menus. Ambicioso não ?
Para nosso tutorial, usaremos o seguinte arquivo XML para menus em '/application/configs/menus.xml' :
Onde 'nav1' e 'nav2' são dois menus diferentes e independentes que queremos usar onde quisermos quando quisermos.
Para realizar tal intento, criamos no '/application/Bootstrap.php' o inicializador de menus:
Coloque na action do controller da sua página a declaração
E finalmente, na view de sua página coloque:
Os '$optionsN' é um extra que coloquei no tutorial para você poder definir classes para cada menu separadamente, uma reles mãozinha para ajudar a fazer seu design :D
E se tudo deu certo, vai aparecer cada menu do xml separadamente, com seus própios itens, com sua própria classe, e você pode colocar na view que quiser e quando quiser.
Agora, essa solução é pra quando você quer acrescentar menus de uma forma particular em certas páginas.
Um jeito de deixar a solução "global", inclusive pra ser usado com 'zend_layout', basta fazer no 'Bootstrap.php'
e pronto, basta colocar as linhas
com ou sem o '$optionsN' em qualquer view ou no layout que será renderizado o menu que você deseja.
Percebam que a técnica pode ser estendida para quantos menus desejar também,basta ir acrescentando um 'nav3', 'nav4', etc ; e ir seguindo o padrão aqui.
Por hora, quero falar sobre o segundo passo sobre menu : como criar 2 menus. Ambicioso não ?
Para nosso tutorial, usaremos o seguinte arquivo XML para menus em '/application/configs/menus.xml' :
# # # # #
Onde 'nav1' e 'nav2' são dois menus diferentes e independentes que queremos usar onde quisermos quando quisermos.
Para realizar tal intento, criamos no '/application/Bootstrap.php' o inicializador de menus:
... // Inicializa os menus de navegação. protected function _initNavigation(){ $nav1Config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/menu.xml', 'nav1'); $navigation1 = new Zend_Navigation($nav1Config); Zend_Registry::set('Navigation1', $navigation1); $nav2Config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/menu.xml', 'nav2'); $navigation2 = new Zend_Navigation($nav2Config); Zend_Registry::set('Navigation2', $navigation2); } ...
Coloque na action do controller da sua página a declaração
public function indexAction(){ $Navigation1 = Zend_Registry::get('Navigation1'); $this->view->navigation1 = $Navigation1; $Navigation2 = Zend_Registry::get('Navigation2'); $this->view->navigation2 = $Navigation2; }
E finalmente, na view de sua página coloque:
Menu nav1
<?php $options1 = array('ulClass' => 'menu1'); print $this->navigation()->menu()->renderMenu($this->navigation1, $options1); ?>Menu nav2
<?php $options2 = array('ulClass' => 'menu2'); print $this->navigation()->menu()->renderMenu($this->navigation2, $options2); ?>
Os '$optionsN' é um extra que coloquei no tutorial para você poder definir classes para cada menu separadamente, uma reles mãozinha para ajudar a fazer seu design :D
E se tudo deu certo, vai aparecer cada menu do xml separadamente, com seus própios itens, com sua própria classe, e você pode colocar na view que quiser e quando quiser.
Agora, essa solução é pra quando você quer acrescentar menus de uma forma particular em certas páginas.
Um jeito de deixar a solução "global", inclusive pra ser usado com 'zend_layout', basta fazer no 'Bootstrap.php'
... // Inicializa os menus de navegação. protected function _initNavigation(){ $nav1Config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/menu.xml', 'nav1'); $navigation1 = new Zend_Navigation($nav1Config); Zend_Registry::set('Navigation1', $navigation1); $nav2Config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/menu.xml', 'nav2'); $navigation2 = new Zend_Navigation($nav2Config); Zend_Registry::set('Navigation2', $navigation2); // Até aqui não muda nada. Você apenas precisará acrescentar umas // variáveis para mandar para a view : $view->navigation1 = Zend_Registry::get('Navigation1'); $view->navigation2 = Zend_Registry::get('Navigation2'); } ...
e pronto, basta colocar as linhas
...Meu menu 1
<?php print $this->navigation()->menu()->renderMenu($this->navigation1); ?>Meu menu 2
<?php print $this->navigation()->menu()->renderMenu($this->navigation2); ?> ...
com ou sem o '$optionsN' em qualquer view ou no layout que será renderizado o menu que você deseja.
Percebam que a técnica pode ser estendida para quantos menus desejar também,basta ir acrescentando um 'nav3', 'nav4', etc ; e ir seguindo o padrão aqui.
Comentários
Postar um comentário