Задать вопрос
hell0w0rd
@hell0w0rd
Просто разработчик

Не могу понять как проверить массив в twig?

Вот макрос немного измененный подобного вопроса с stackoverflow
{% macro menu(links) %}
    {% for key, link in links %}
        <li>
            <a href="{{ link }}">{{ key }}</a>
            {% if link.sublink %}
                <ul>
                    {{ _self.menu_links(link[key]) }}
                </ul>
            {% endif %}
        </li>
    {% endfor %}
{% endmacro %}


Но у link нет sublink и нет фильтра hassublinks. Как быть, самому написать? Или все же есть методы проверки внутри ядра твига?

if link is array — также не работает, такой проверки нет

На вход подается массив, если нужно могу дать var_dump, в yml он выглядит так:
Главная: /
Контакты: /contacts
Форум: /forum
О нас: /about
Услуги:
    Услуга1: /one
    Услуга2: /two
  • Вопрос задан
  • 8017 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
JekaRu
@JekaRu
Вот что придумал, должно работать как требуется:
{% if  (link|keys)|length>0 %}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
JekaRu
@JekaRu
Может так?
{% if link.sublink is defined and link.sublink|length>0 %}
Ответ написан
@Koroalen
Так вот:

{% if link is iterable %}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы