KnpMenuBundle - 如何为菜单的每个元素设置一个图标 class?
KnpMenuBundle - how can i set an icon class to each elements of menu?
我希望我的视图代码如下所示:
<li>
<a href="path/to/action">
<i class="icon-class"></i>
<span class="title">Title</span>
</a>
</li>
我通过菜单生成器创建菜单元素:
class Builder extends ContainerAware
{
public function adminMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$menu->addChild('Dashboard', array(
'route' => 'admin_dashboard',
));
return $menu;
}
}
我已经用以下代码 (knp_menu.html.twig) 覆盖了视图:
{% block linkElement %}
{% import _self as knp_menu %}
<a href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>
<i class="icon-class"></i>
<span class="title">{{ block('label') }}</span>
</a>
{% endblock %}
如何在 Builder class 的方法 adminMenu() 中将图标 class 名称的值传递给 <i>
元素?最简单的方法是什么?
您可以添加任何您想要的属性
$menu->addChild('Dashboard', array(
'route' => 'admin_dashboard',
))->setAttribute('icon', 'icon-class');
然后
{{ item.attribute('icon') }}
简单:
$menu->addChild('Home', ['route' => 'home_page'])
->setAttribute('icon', 'fa fa-home');
我建议使用 extras
而不是 attributes
,因为 attributes
用于呈现 li
元素的属性。
$menu->addChild('Dashboard', array(
'uri' => '#',
))->setAttribute('icon', 'icon-class');
和
{{ item.attribute('icon') }}
可能会呈现为:
<li icon="icon-class"><a href="#"><i class="fa fa-icon-class" aria-hidden="true"></i> Dashboard</a></li>
鉴于:
$menu->addChild('Dashboard', array(
'uri' => '#',
))->setExtra('icon', 'icon-class');
和
{{ item.extra('icon') }}
可能只会呈现为:
<li><a href="#"><i class="fa fa-icon-class" aria-hidden="true"></i> Dashboard</a></li>
另请参阅此答案:。
我希望我的视图代码如下所示:
<li>
<a href="path/to/action">
<i class="icon-class"></i>
<span class="title">Title</span>
</a>
</li>
我通过菜单生成器创建菜单元素:
class Builder extends ContainerAware
{
public function adminMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$menu->addChild('Dashboard', array(
'route' => 'admin_dashboard',
));
return $menu;
}
}
我已经用以下代码 (knp_menu.html.twig) 覆盖了视图:
{% block linkElement %}
{% import _self as knp_menu %}
<a href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>
<i class="icon-class"></i>
<span class="title">{{ block('label') }}</span>
</a>
{% endblock %}
如何在 Builder class 的方法 adminMenu() 中将图标 class 名称的值传递给 <i>
元素?最简单的方法是什么?
您可以添加任何您想要的属性
$menu->addChild('Dashboard', array(
'route' => 'admin_dashboard',
))->setAttribute('icon', 'icon-class');
然后
{{ item.attribute('icon') }}
简单:
$menu->addChild('Home', ['route' => 'home_page'])
->setAttribute('icon', 'fa fa-home');
我建议使用 extras
而不是 attributes
,因为 attributes
用于呈现 li
元素的属性。
$menu->addChild('Dashboard', array(
'uri' => '#',
))->setAttribute('icon', 'icon-class');
和
{{ item.attribute('icon') }}
可能会呈现为:
<li icon="icon-class"><a href="#"><i class="fa fa-icon-class" aria-hidden="true"></i> Dashboard</a></li>
鉴于:
$menu->addChild('Dashboard', array(
'uri' => '#',
))->setExtra('icon', 'icon-class');
和
{{ item.extra('icon') }}
可能只会呈现为:
<li><a href="#"><i class="fa fa-icon-class" aria-hidden="true"></i> Dashboard</a></li>
另请参阅此答案:。