2014-01-07 157 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