如何自定义 KNPMenuBundle?
我不知道如何使用 KnpMenuBundle 添加图像或跨度标签。
我只是想要这个:
<ul>
<li>
<img src="{{asset('bundles/mybundle/images/my_image.png')}} /">
<span>My Title</span>
</li>
</ul>
在 MenuBuilder 中,这将从:
$menu->addChild('My Title');
如何在<li>
声明中添加图像?
编辑:简单的方法
在捆绑包中实际上有一种简单的方法可以做到这一点:
1 将模板复制 vendor\KnpMenu\src\Knp\Menu\Resources\views\knp_menu.html.twig
到您的Acme\AcmeBundle\Resources\views\Menu\knp_menu.html.twig
并扩展如下:
{% extends 'knp_menu.html.twig' %}
2 根据您的需要修改模板。例如,如果您决定每次使用时都添加一个 span 标签 $menu->addChild('Your Title');
,只需在 之间添加 span 标签<a></a>
:
{% block linkElement %}
<a href="{{ item.uri }}"{{ _self.attributes(item.linkAttributes) }}>
<span>{{ block('label') }}</span>
</a>
{% endblock %}
3 您现在可以在使用菜单时选择自定义布局:
{{ knp_menu_render('main', {'template': 'AcmeBundle:Menu:knp_menu.html.twig'}) }}