2014-01-07 121 views
4

我使用ZF2和引導建立一個菜單,我已經有這樣的菜單:Zend框架2導航子菜單(頂層菜單)

Home | Users | Options 

但現在我需要的子菜單,但我找不到一種方式來做到這一點。我需要像懸停菜單項(例如:用戶),然後顯示'列表','添加','編輯'

我真的很感激任何幫助。

謝謝

回答

4

您可以通過局部視圖實現此目的。

在您的配置文件例如配置/自動加載/ global.php

return array(

    // Your others config arrays 

    'navigation' => array(
     'default' => array(
      array(
       'label' => 'Home', 
       'route' => 'home', 
      ), 
      array(
       'label' => 'User', 
       'route' => 'user', 
       'pages' => array(
        array(
         'label' => 'List', 
         'route' => 'list', 
        ), 
        array(
         'label' => 'Add', 
         'route' => 'add', 
        ), 
        array(
         'label' => 'Edit', 
         'route' => 'edit', 
        ), 
       ), 
      ), 
      array(
       'label' => 'Options', 
       'route' => 'options', 
      ), 
     ) 
    ) 
); 

在你的佈局文件,例如視圖/佈局/ layout.phtml

<nav> 
    <?php 
    echo $this->navigation('navigation') 
       ->menu() 
       ->setPartial('partial/menu') 
       ->render(); 
    ?> 
</nav> 

局部視圖,這裏視圖/分/ menu.phtml

<ul> 
<?php 
foreach ($this->container as $page) 
{ 
    $hasChildren = $page->hasPages(); 
    if(! $hasChildren) 
    { 
     ?> 
     <li><a href="<?php echo $page->getHref(); ?>"><?php echo $page->getLabel(); ?></a></li> 
     <?php 
    } 
    else 
    { 
     ?> 
     <li> 
      <a href="<?php echo $page->getHref(); ?>"><?php echo $page->getLabel(); ?></a> 
      <ul> 
      <?php 
      foreach($page->getPages() as $child) 
      { 
       ?> 
       <li><a href="<?php echo $child->getHref(); ?>"><?php echo $child->getLabel(); ?></a></li> 
       <?php 
      } 
      ?> 
      </ul> 
     </li> 
     <?php 
    } 
} 
?> 
</ul> 

如果您需要CSS的樣品,你可以找到一些在這個回答:

https://stackoverflow.com/a/13328340/3294723