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

时间:2014-01-07 15:04:39

标签: php twitter-bootstrap frameworks zend-framework2

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

Home | Users | Options

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

我真的很感激任何帮助。

由于

1 个答案:

答案 0 :(得分: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',
            ),
        )
    )
);

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

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

局部视图,这里是 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>

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

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