11

用树枝将类添加到knp_menu's根元素的正确方法是什么?<ul>

我尝试了很多东西:

1.

{{ knp_menu_render('main', {'class': 'foo'}) }}

2.

{{ knp_menu_render('main', {'attributes': {'class': 'foo'}}) }}

3.

{{ knp_menu_render('main', {'listAttributes': {'class': 'foo'}}) }}

4.

{{ knp_menu_render('main', {'attributes': {'listAttributes': {'class': 'foo'}}}) }}

他们都没有工作

4

4 回答 4

18

您可以将其添加到您的菜单生成器中,例如..

$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' }) }}
于 2014-06-18T12:37:02.823 回答
2

还没有找到一个干净的解决方案来传递参数。我在builder课堂上的解决方案:

$menu->setChildrenAttribute('id', 'boo') ->setChildrenAttribute('class', 'foo');

于 2014-09-01T10:09:05.640 回答
1
{% set menu = knp_menu_get('AppBundle:Builder:mainMenu', []) %}
{% do menu.setChildrenAttribute('class', 'child-class') %}
{% knp_menu_render(menu, {'currentClass': 'active'}) %}

在这里找到https://github.com/KnpLabs/KnpMenu/issues/166

于 2017-11-24T13:20:37.677 回答
1

尝试

{% set menu = knp_menu_get('AppBundle:Builder:categoriesMenu', [], {'childrenAttributes': {'class': 'menu'}}) %}
{{ knp_menu_render(menu) }}
于 2017-02-23T17:14:50.370 回答