Twig основного меню не распознает if logged_in

Аватар пользователя tyred tyred 28 мая 2019 в 4:20

Задача показывать в основном меню ссылки log in/logout + ссылку на профайл. Добавил в twig основном меню условие, которое находится между комментариями "Мой код". Код не работает именно в этом месте — система не понимает, что пользователь залогинился и все время отображает "Log In". При этом если вставить этот код в шаблон выше уровнем, например, в page, то все работает как надо.
В чем может быть дело?

{{ menus.menu_links(items, attributes, 0) }}

{% macro menu_links(items, attributes, menu_level) %}
  {% import _self as menus %}
  {% if items %}
    {%
      set classes = [
        menu_level == 0 ? 'uk-navbar-nav',
        menu_level > 0 ? 'uk-nav',
        menu_level > 0 ? 'uk-navbar-dropdown-nav',
      ]
    %}

    {% if menu_level > 0 %}
      <div class="uk-navbar-dropdown">
    {% endif %}

    <ul{{ attributes.addClass(classes) }}>
    {% for item in items %}
      <li{{ item.attributes }}>
        {% if item.is_header %}
          {{  item.title }}
        {% elseif not item.is_divider %}
          {{ link(item.title, item.url) }}
        {% endif %}
        {% if item.below %}
          {{ menus.menu_links(item.below, attributes.removeClass(classes), menu_level + 1) }}
        {% endif %}
      </li>
    {% endfor %}
    {# Мой код #}
    {% if logged_in %}
      <li class="user">
        <a href="/user" title="Account"><span class="uk-icon uk-margin-small-right" uk-icon="icon: user"></span>{{ user.displayname }}</a>
      </li>
      <li class="logout">
        <a href="/logout" title="Log Out">
          <span class="uk-icon uk-margin-small-right" uk-icon="icon: sign-out"></span>
        </a>
      </li>
    {% else %}
      <li class="login">
        <a href="/login" title="Log In">Log In</a>
      </li>
    {% endif %}
{# / Мой код #}
    </ul>
    {% if menu_level > 0 %}
      </div>
    {% endif %}
  {% endif %}
{% endmacro %}

Комментарии