次のようにメニュービルダーに追加できます..
$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' }) }}