{% 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 #} <li{{ macros.attributes(attributes) }}> {%- 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') }} </li> {%- if divider_append %} {{ block('dividerElement') }} {%- endif %}{% endif %}{% endblock %}{% block dividerElement %}{% if item.level == 1 %} <li class="divider-vertical"></li>{% else %} <li class="divider"></li>{% endif %}{% endblock %}{% block linkElement %} {% import "knp_menu.html.twig" as macros %} <a href="{{ item.uri }}"{{ macros.attributes(item.linkAttributes) }}> {% if item.attribute('icon') is not empty %} <i class="{{ item.attribute('icon') }}"></i> {% endif %} {{ block('label') }} </a>{% endblock %}{% block spanElement %} {% import "knp_menu.html.twig" as macros %} <span {{ macros.attributes(item.labelAttributes) }}> {% if item.attribute('icon') is not empty %} <i class="{{ item.attribute('icon') }}"></i> {% endif %} {{ block('label') }} </span>{% 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'}) %} <a href="#"{{ macros.attributes(attributes) }}> {% if item.attribute('icon') is not empty %} <i class="{{ item.attribute('icon') }}"></i> {% endif %} {{ block('label') }} <b class="caret"></b> </a>{% endblock %}{% block label %}{{- item.label|trans( item.getExtra('translation_params', {}), item.getExtra( 'translation_domain', item.getParent() ? item.getParent().getExtra('translation_domain') : null ) )-}}{% endblock %}