2017-09-24 4 views
4

現在、Symfonyバンドルでメニューを作っています:KnpMenuBundle。私はスタイルシートとしてブートストラップ4を使用しています。KnpMenuBundleがBootstrap 4 navbarで動作しません

ブートストラップ4は、クラスのNAV-アイテム」を持っているナビゲーションバー内の各リスト項目を必要とします。

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

私はクラスのNAV-アイテム 'を追加する方法を見つけ出すように見えることはできませんアイテムをKnpMenuBundleでリストします。これは、SRC/AppBundle /メニューの私のビルダークラスです navbar result

:base.html.twigで

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; 
    } 
} 

私のコードは、メニューを生成するために、私はページをロードする際現在、私はこれを見ます

{{ 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

ありがとうございました。 –

関連する問題