2017-09-24 103 views
4

我目前做的菜单,其中的Symfony包工作。我使用Bootstrap 4作为样式表。KnpMenuBundle不与引导4导航栏

引导4需要在导航栏每个列表项有类的导航项目“:

<li class="nav-item active"> <-- this 
    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> 
</li> 

我似乎无法弄清楚如何在类的导航项目”添加到使用KnpMenuBundle列出项目。目前我看到这个当我加载的页面: navbar result

这在src /的appbundle /菜单我的生成器类:

namespace AppBundle\Menu; 


use Knp\Menu\MenuFactory; 

class Builder 
{ 
    public function mainMenu(MenuFactory $factory, array $optioins) 
    { 
     $menu = $factory->createItem('root'); 
     $menu->setChildrenAttribute('class', 'navbar-nav mr-auto'); 
     $menu->addChild('Home', ['route' => 'homepage']); 
     $menu->setChildrenAttributes(['class' => 'nav-item']); 
     return $menu; 
    } 
} 

我在base.html.twig代码生成菜单:

{{ knp_menu_render('AppBundle:Builder:mainMenu', {'currentClass': 'active'}) }} 

我该怎么做才能让这件事吗?

回答

2

我这样做是为了得到顶级正确。尽管如此,还没有制定出下拉菜单。

$menu->setChildrenAttribute('class', 'navbar-nav'); 
// menu items 
foreach ($menu as $child) { 
    $child->setLinkAttribute('class', 'nav-link') 
     ->setAttribute('class', 'nav-item'); 
} 
2

您可以将类添加到每个子项如果你把这样的:

$menu->addChild('Home', ['route' => 'homepage']) 
    ->setAttributes(array(
     'class' => 'nav-item' 
    )); 
+0

谢谢你,这工作:) –