2

我用 KnpMenuBundle 在我的导航栏菜单上写了最后几天。我只想在途中给模板一些参数,然后对其做出反应。可能吗?我试过这个:

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

然后我想在 Twig 模板中选择这个:

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

我尝试了很多,但没有任何效果。接下来我可以尝试什么?

4

2 回答 2

4

我是这样做的

菜单类:

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

我在模板中的菜单调用,我要求一个特定的树枝模板

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

在树枝模板中,我复制/粘贴 knpmenubundle 模板并编辑一些块。您也可以使用“扩展”和模板的继承内容来做到这一点(可能是一个更好的主意)。

图标的编辑块示例:

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

您需要的可能是菜单类中的这个“附加”字段:)

于 2013-09-30T13:17:27.447 回答
1

我不知道这是否仍然有帮助,但是有一种更简单的方法可以通过 knp 菜单使用 font awesome。有一个选项可以为您的链接提供课程。您只需要创建一个没有标签的孩子并添加 setLinkAttribute。前任:

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

这将创建一个带有 fa fa-home 类的“a”标签。即使 Font Awesome 文档说这些图标是为内联元素设计的,它也可以与“a”标签一起使用。然后,您可以使用一些 css 来改进设计。就我而言,我只是更改了字体大小和行高。

于 2014-10-27T19:05:24.090 回答