@andreyqin

Как вывести подменю из базы с помощью twig, с разделением на 3 блока?

Всем добрый день! Стоит задача вывести подменю из базы данных с помощью twig, с разделением его на 3 дива. То есть, подменю должно иметь следующую структуру:
<div class="submenu">
    <div>
        <a href="menu.php?id=1">Подкатегория 1</a>
        <a href="menu.php?id=2">Подкатегория 2</a>
        <a href="menu.php?id=3">Подкатегория 3</a>
    </div>
    <div>
        <a href="menu.php?id=4">Подкатегория 4</a>
        <a href="menu.php?id=5">Подкатегория 5</a>
        <a href="menu.php?id=6">Подкатегория 6</a>
    </div>
    <div>
        <a href="menu.php?id=7">Подкатегория 7</a>
        <a href="menu.php?id=8">Подкатегория 8</a>
        <a href="menu.php?id=9">Подкатегория 9</a>
    </div>
</div>

Каждый внутренний див прижат влево, образуя таким образом 3 колонки. Я написал код, который выводит с первого взгляда все так, как мне нужно:
{% set counter = 0 %}
{% for menu_item in menu %}
    {% if counter == 0 %}
        <div>
    {% endif %}
    <a href="/menu.php?id={{ menu_item.id }}">{{ menu_item.name }}</a>
    {% set counter = counter + 1 %}
    {% if counter == 3 %}
        {% set counter = 0 %}
        </div>
    {% endif %}
{% endfor %}
{% if counter != 0 %}
    </div>
{% endif %}

При добавлении еще одного подменю создается четвертый див и в него добавляется последняя ссылка, хотя внешне это выглядит, как будто ссылка добавилась в первый. Вот как это выглядит на деле: изображение. В данном случае последние подкатегории "Новая" и "Новая 1" находятся в 4-ом диве, а должно быть, чтобы "Новая" находилась в первом, а "Новая 1" во втором. Получается, мне нужен примерно следующий алгоритм: в цикле открываем первый див - выводим в него 1-ую ссылку, закрываем, открываем второй див - выводим в него 2-ую ссылку, закрываем, открываем третий - 3-ю ссылку. А вот 4-у ссылку мы должны выводить опять в первый див, 5-ую - во второй и т.д. То есть, чтобы ссылки в итоге добавлялись построчно, а не по 3 в столбик. Не могу понять как такое реализовать.
  • Вопрос задан
  • 2754 просмотра
Пригласить эксперта
Ответы на вопрос 1
@apasen
<div>
{% for menu_item in menu %}
    {% if loop.index0 != 0 and loop.index0%3  == 0%}
        </div>
        <div>
    {% endif %}
    <a href="/menu.php?id={{ menu_item.id }}">{{ menu_item.name }}</a>
{% endfor %}
</div>


Примерно так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы