Ir para conteúdo

POWERED BY:

Arquivado

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

Tylër

Menu com submenu com foreach

Recommended Posts

Opa, td bem?

 

Bom, quando eu estava no início dos estudos do Php, eu sabia como criar o menu com submenu, adaptei para o cake e ficou perfeito, só que agora que voltei a estudar novamente, não consigo me lembrar como era:

 

controller:

function index() {
 $this->loadModel('Menu');
 $this->loadModel('Submenu');

 $menus = $this->Menu->find( 'all', array( 'fields'=>array('Menu.id', 'Menu.name') ) );
 $submenus = $this->Submenu->find( 'all', array('fields'=>array('id', 'name')) );

 $this->set( compact( 'menus', 'submenus' ) );
}

 

view:

<?php foreach ($menus as $key => $item): ?>
<ul class="menu">
 <li>
 	<?php  echo $item['Menu']['name']; ?>

     	<?php if ( count($submenus) ): ?>
     	<ul class="sub-menu">
      		<?php foreach ($submenus as $sub): ?>
      		<li><?php echo $html->link( $sub['Submenu']['name'], array('controller'=>'main_games', 'action'=>'view', $sub['Submenu']['id']) ); ?></li>
      		<?php endforeach; ?>
  		</ul>
  		<?php endif; ?>
 </li>
</ul>
<?php endforeach; ?>

 

Sei que não é isto, pois os dados se repetiriam, duplicariam como abaixo:

 

Menu 1
 Sub 1 - menú 1
 Sub 2 - menú 1
 Sub 3 - menú 2

Menu 2
 Sub 1 - menú 1
 Sub 2 - menú 1
 Sub 3 - menú 2

 

Então peço uma ajudinha, pois sei que é simples, só que não consigo me lembrar como era.... :ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ufa, ótimo tópico que explica isso...

 

http://pastebin.com/xHD5RwZy

 

Na verdade, estava quase certo, eu setei o pr($menus) na view e me lembrei de que as tabelas menus e submenus estao interligadas, entao bastava chamar a tabela menus na action do controller de menu.

 

Aghra consegui o que eu queria:

	Menu 1
   	Sub 1 - menú 1
   	Sub 2 - menú 1

Menu 2
   	Sub 3 - menú 2

 

Até mais!

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.