{% extends 'knp_menu.html.twig' %} {% block item %} {% import "knp_menu.html.twig" as macros %} {% if item.displayed %} {%- set attributes = item.attributes %} {%- set is_dropdown = attributes.dropdown|default(false) %} {%- set divider_prepend = attributes.divider_prepend|default(false) %} {%- set divider_append = attributes.divider_append|default(false) %} {# unset bootstrap specific attributes #} {%- set attributes = attributes|merge({'dropdown': null, 'divider_prepend': null, 'divider_append': null }) %} {%- if divider_prepend %} {{ block('dividerElement') }} {%- endif %} {# building the class of the item #} {%- set classes = item.attribute('class') is not empty ? [item.attribute('class')] : [] %} {%- if matcher is defined %} {# KnpMenu 2.0#} {%- if matcher.isCurrent(item) %} {%- set classes = classes|merge([options.currentClass]) %} {%- elseif matcher.isAncestor(item, options.depth) %} {%- set classes = classes|merge([options.ancestorClass]) %} {%- endif %} {%- else %} {# KnpMenu 1.X #} {%- if item.current %} {%- set classes = classes|merge([options.currentClass]) %} {%- elseif item.currentAncestor %} {%- set classes = classes|merge([options.ancestorClass]) %} {%- endif %} {%- endif %} {%- if item.actsLikeFirst %} {%- set classes = classes|merge([options.firstClass]) %} {%- endif %} {%- if item.actsLikeLast %} {%- set classes = classes|merge([options.lastClass]) %} {%- endif %} {# building the class of the children #} {%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %} {%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %} {# adding classes for dropdown #} {%- if is_dropdown %} {%- set classes = classes|merge(['dropdown']) %} {%- set childrenClasses = childrenClasses|merge(['dropdown-menu']) %} {%- endif %} {# putting classes together #} {%- if classes is not empty %} {%- set attributes = attributes|merge({'class': classes|join(' ')}) %} {%- endif %} {%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %} {# displaying the item #} {%- if is_dropdown %} {{ block('dropdownElement') }} {%- elseif item.uri is not empty and (not item.current or options.currentAsLink) %} {{ block('linkElement') }} {%- else %} {{ block('spanElement') }} {%- endif %} {# render the list of children#} {{ block('list') }} {%- if divider_append %} {{ block('dividerElement') }} {%- endif %} {% endif %} {% endblock %} {% block dividerElement %} {% if item.level == 1 %}
  • {% else %}
  • {% endif %} {% endblock %} {% block linkElement %} {% import "knp_menu.html.twig" as macros %} {% if item.attribute('icon') is not empty %} {{ item.attribute('icon')|parse_icon }} {% endif %} {{ block('label') }} {% endblock %} {% block spanElement %} {% import "knp_menu.html.twig" as macros %} {% if item.attribute('icon') is not empty %} {{ item.attribute('icon')|parse_icon }} {% endif %} {{ block('label') }} {% endblock %} {% block dropdownElement %} {% import "knp_menu.html.twig" as macros %} {%- set classes = item.linkAttribute('class') is not empty ? [item.linkAttribute('class')] : [] %} {%- set classes = classes|merge(['dropdown-toggle']) %} {%- set attributes = item.linkAttributes %} {%- set attributes = attributes|merge({'class': classes|join(' ')}) %} {%- set attributes = attributes|merge({'data-toggle': 'dropdown'}) %} {% if item.attribute('icon') is not empty %} {{ item.attribute('icon')|parse_icon }} {% endif %} {{ block('label') }} {% endblock %} {% block label %} {# We use method accessor instead of ".label" since `item` implements `ArrayAccess` and could have a property called "label". #} {{- item.getLabel()|trans( item.getExtra('translation_params', {}), item.getExtra( 'translation_domain', item.getParent() ? item.getParent().getExtra('translation_domain') : null ) ) -}} {% endblock %}