Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bob Wizley

Zend_Navigation com dados do banco

Recommended Posts

Olá pessoal, atualmente estou desenvolvendo um projeto onde precisei criar um menu principal para o meu módulo administrativo.

 

Contudo este menu será dinâmico e o usuário poderá cadastrar novos itens, sendo assim não encontrei uma forma de fazer o Zend_Navigation trabalhar com os resultados do banco de dados (nada de arquivos ini ou xml).

 

Existem vários tutoriais na internet que ensinam a trabalhar com o navigation utilizando arquivos de configuração, porém, no meu caso, preciso trabalhar com o resultado de uma query.

 

Alguém poderia me dar uma dica de como proceder nesta situação?

Grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se isso ajuda.

 

Atraves do Zend_auth eu pego o id do usuário;

$usuario = Zend_Auth::getInstance()->getIdentity();
     $id_permissao = $usuario->permissao_id;

 

Busco os menus com as permisão "$id_permissão"

$sql = new Application_Model_Menu();      
       //pega mone dos menus com permissao
       $menu = $sql->listarMenu($id_permissao);
      	//Envia para Views
      	$this->view->menu = $menu;

 

Por ultimo pego em outra tabela os sub-menus

$sql = new Application_Model_SubMenu();
       $submenu = $sql->listarSubMenu($id_permissao);
	//Envia para Views
      	$this->view->submenu = $submenu;

 

Na view eu uso CSS para formar os menus e sub-menus

 

<ul id="menu" class="MenuBarHorizontal">


<?php 
$permissao 	= $this->usuario->permissao_id;
$nomes 		= $this->menu;
foreach ($nomes as $indice => $valor) {?>
<li id="x0ub0_0_<?php echo $indice;?>"> <a href="#" class="MenuBarItemSubmenu"> <?php echo $valor['menu'];?></a>
<?php 	echo '<ul>';
//se conferir com a permissao continua
if ($valor['permissao_id'] >= $permissao){
foreach ($this->submenu as $indice => $submenu){	
	if ($valor['idmenu'] == $submenu['idmenu']){?>		
		<li id="x0ub0_0_0_<?php echo $indice;?>"><a id="x0ub0_0_0_<?php echo $indice;?>" href="javascript:void(0);" onClick="wopen('<?php echo $submenu['nome'];?>','<?php echo $submenu['link'];?>','','700','400','');"><?php echo $submenu['nome'];?></a></li>
<?php 	}

}
}
echo '</ul>';
echo  '</li>';
}
?> 


</ul>

 

O resultado é esse:mostra.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer de duas formas diferentes:

1 - Plugin:

Você cria um plugin que ao inicializar ele realiza a consulta e adiciona todas as páginas diretamente na inicialização e configuração do Zend_Navigation.

 

       $container = new Zend_Navigation($config->default);
       $pages = $news->getNavigationEntries();
       foreach ($pages AS $page) {
       	$page = new Zend_Navigation_Page_Mvc($page);
       	$container->findOneBy('label', 'Latest News')->addPage($page);
       }
       $view->navigation($container);

 

2 - JSON:

Você realiza toda a consulta desejada, crie o seu json e por fim converte ele para XML.

 

$jsonContents = Zend_Json::fromXml($xmlStringContents, true);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Bonamini,

Achei bem interessante montar minha navigation utilizando um plugin.

Já resolveu um pouco o meu problema.

 

Agora estou um pouco confuso quanto a estrutura da minha tabela no banco de dados, visto que só posso usar uma tabela para todo o menu. Estou pensando na melhor maneira de relacionar os submenus e montar posteriormente meu array de páginas. Se alguém tiver uma solução, será bem-vinda.

 

Olá Bonamini,

Achei bem interessante montar minha navigation utilizando um plugin.

Já resolveu um pouco o meu problema.

 

Agora estou um pouco confuso quanto a estrutura da minha tabela no banco de dados, visto que só posso usar uma tabela para todo o menu. Estou pensando na melhor maneira de relacionar os submenus e montar posteriormente meu array de páginas. Se alguém tiver uma solução, será bem-vinda.

ja pensou em usar o auto relacionamento? vamos supor

 

id | id pai | menu

1 | 1 | home

2 | 1 | servicos

3 | 2 | sites

 

ker dizer o home pertence a ele mesmo, o servicos pertence a home, e sites pertence a servicos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.