Zend Framework 2导航子菜单(顶级菜单)

Jor*_*tos 4 php frameworks twitter-bootstrap zend-framework2

我正在使用ZF2和bootstrap构建菜单,我已经有了这种菜单:

Home | Users | Options
Run Code Online (Sandbox Code Playgroud)

但现在我需要子菜单,但我找不到办法.我需要像悬停菜单项(例如:用户),然后显示'列表','添加','编辑'

我真的很感激任何帮助.

谢谢

小智 5

您可以通过局部视图实现此目的.

在您的配置文件中,例如config/autoload/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',
            ),
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

在您的布局文件中,例如view/layout/layout.phtml:

<nav>
    <?php
    echo $this->navigation('navigation')
              ->menu()
              ->setPartial('partial/menu')
              ->render();
    ?>
</nav>
Run Code Online (Sandbox Code Playgroud)

部分视图,这里是view/partial/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>
Run Code Online (Sandbox Code Playgroud)

如果你需要CSS样本,你可以在这个答案中找到一些:

/sf/answers/932983831/