KnpMenuBundle - как я могу установить класс значков для каждого элемента меню?
Я хочу, чтобы мой код представления выглядел так:
<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 %}
Как я могу передать значение имени класса значка элементу <i>
в методе AdminMenu() в классе Builder? Какой самый простой способ это сделать?
5
Author: klapaucius, 2015-01-02
3 answers
Вы можете добавить любой атрибут с помощью
$menu->addChild('Dashboard', array(
'route' => 'admin_dashboard',
))->setAttribute('icon', 'icon-class');
Затем
{{ item.attribute('icon') }}
8
Author: Federkun, 2015-01-02 20:04:30
Я бы предложил использовать 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>
Также смотрите этот ответ: https://stackoverflow.com/a/19095287/2106834.
3
Author: Jonny, 2017-05-23 12:25:20
Просто:
$menu->addChild('Home', ['route' => 'home_page'])
->setAttribute('icon', 'fa fa-home');
0
Author: Lord Zed, 2015-01-02 20:51:00