您可以将其添加到您的菜单生成器中,例如..
$menu = $this->factory->createItem('root', array(
'childrenAttributes' => array(
'class' => 'foo',
),
));
更新
我刚刚收到关于此的通知并找到了另一种方法,尽管它需要您使用自定义模板来实现它。
在您的自定义模板中,您需要覆盖list
块,如..
{% block list %}
{% if item.hasChildren and options.depth is not sameas(0) and item.displayChildren %}
{% import 'knp_menu.html.twig' as knp_menu %}
<ul{{ knp_menu.attributes(listAttributes|merge({'class': [
options.rootClass is defined ? options.rootClass : '',
listAttributes.class is defined ? listAttributes.class : ''
]|join(' ')
})) }}>
{% set options = options|merge({'rootClass': '' }) %}
{{ block('children') }}
</ul>
{% endif %}
{% endblock %}
在这种情况下,而不是使用knp_menu.attributes(listAttributes)
您传递一个带有您即时生成的listAttributes.class
值的数组。该属性是通过将option.rootClass
(如果存在)与listAttributes.class
(如果存在)作为listAttributes.class
值连接而生成的。
该option.rootClass
值''
在使用后重置为使用,{% set options = options|merge({'rootClass': '' }) %}
因此它不会添加到每个子菜单中。
这将允许您使用..呈现您的菜单
{{ knp_menu_render('main', {'rootClass': 'foo' }) }}