2013-09-26 20 views
2

我在我的導航欄菜單上編寫了最後幾天的KnpMenuBundle。但我想放棄它。我只想簡單地給Template提供一些參數,然後對它做出反應。我瘋了。可能嗎。我嘗試這樣做:KnpMenuBundle - 發送選項並在Twig中使用它們

$menu->addChild('Registration', array('route' => 'fos_user_registration_register', 
             'icon' => array('glyphicon' => 'briefcase'))); 

然後我想在枝條,模板選擇這個:

{% if icon['glyphicon'] is defined %} 
    <span class="glyphicon glyphicon-{{icon['glyphicon']}} "></span> 
{% endif %} 

我嘗試了很多,但沒有任何工程。它一定很簡單。我不相信,這不應該是可能的。

回答

4

這裏是我是如何做到的

菜單類:

$menu->addChild('Home', array(
    'route' => 'home', 
    'extras' => array('icon' => 'home') 
)); 

模板我的菜單調用,我問一個具體的樹枝模板

{{ knp_menu_render('MyBundle:Menu:primaryNav', {'template': 'MyBundle:Menu:primaryNav.html.twig'}) }} 

在樹枝模板,我複製/粘貼knpmenubundle模板並編輯一些塊。你可以用'extends'和模板的繼承東西來做到這一點(可能是一個更好的主意)。對於圖標編輯塊

例子:

{% block spanElement %} 
<a href="#" class="dropdown-toggle"> 
    {% if item.extras.icon is defined %}<i class="icon-{{ item.extras.icon }}"></i>{% endif %} 
    <span class="menu-text"> {{ block('label') }}</span> 
    <b class="arrow icon-angle-down"></b> 
</a> 
{% endblock %} 

你需要什麼樣的可能是在菜單類這種「額外」字段:)

0

我不知道這是否仍然可以幫助,但有使用knp菜單使用字體非常簡單。有一個選項可以讓你的鏈接上課。您只需創建一個沒有標籤的子項並添加setLinkAttribute。例如:

$ menu-> addChild('',array('route'=>'backend_index')) - > setLinkAttribute('class','fa fa-home');

這將創建fa fa-home類的「a」標籤。即使字體很棒的文檔說圖標是爲內聯元素設計的,它也可以與「a」標籤一起使用。然後你可以使用一些CSS來改進設計。就我而言,我只是改變了字體大小和行高。

相關問題