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