Используйте веточку «loop.length» внутри цикла, а затем используйте его вне цикла - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь реализовать счетчик подпунктов меню для каждого пункта меню, используя Twig "loop.length". В соответствии с документами веток здесь я могу получить доступ к переменной, если объявлю ее перед циклом:

    <div id="menu">
        <div class="list-group">
            {% if menuItems %}
            {% set items = menuItems %}
            {% for item in items %}
            <a href="#">{{ item.title }}</span>{{ subitem_counter }}</span></a>
            {% if item.items %}
            <div class="list-subgroup">
                {% set subitem_counter = "" %}
                {% for subitem in item.items %}
                {% set subitem_counter = loop.length %}
                <a href="#">{{ subitem.title }}</a>
                {% endfor %}
            </div>
            {% endfor %}
            {% endif %}
        </div>
    </div>

Проблема в том, что каким-то образом в первом пункте меню я не получаю никаких данных о «subitem_counter», во втором пункте меню я получаю данные подсчета из первых подпунктов меню, в третьем пункте меню я получаю данные подсчета из подпунктов второго меню и т. Д. .

1 Ответ

0 голосов
/ 03 ноября 2018

использование length фильтр веток :

<div id="menu">
    <div class="list-group">
        {% if menuItems %}
            {% set items = menuItems %}
            {% for item in items %}
                <a href="#">{{ item.title }}</span>{{ item.items|length }}</span></a>
                {% if item.items %}
                    <div class="list-subgroup">
                    {% for subitem in item.items %}
                        <a href="#">{{ subitem.title }}</a>
                    {% endfor %}
                    </div>
            {% endfor %}
        {% endif %}
    </div>
</div>

вы не можете использовать значение переменной, прежде чем присваивать ей значение.

...