Передача массива в Twig

125
16 ноября 2020, 10:10

Имеется многомерный массив $categories_arr:

array (size=4)
  'Первая' => 
    array (size=1)
      'От первой' => 
        array (size=1)
          '1-1' => 
            array (size=2)
              9 => string 'от 1-1' (length=8)
              11 => string 'от 1-1' (length=8)
  'Вторая' => 
    array (size=1)
      5 => string 'От второй' (length=17)
  4 => string 'Третья' (length=12)
  'Четвертая' => 
    array (size=1)
      8 => string 'от четвертой' (length=23)

В PHP я его могу перебрать функцией:

function ShowTree($arr)
{
    echo "<ul>";
    foreach($arr as $key => $a) {
        if (is_array($a)){
            echo "<li>$key</li>";
            ShowTree($a);
        }else{
            echo "<li>$a</li>";
        }
    }
    echo "</ul>";
}

Однако я использую шаблонизатор Twig, как перебрать этот массив там (вывести список категорий иерархично)?

Answer 1

teran натолкнул в правильную сторону и удалось решить задачу:

шаблоны инклудить в твиге можно? параметры передавать туда можно? Если здесь рекурсию пишите, то и там инклудьте сам-себя

Сделал отдельный файл шаблона cat.twig который сам себя инклудит и делает рекурсию

<ul>
    {% for key, item in categories_arr %}
        {% if item is iterable %}
    <li>{{ key }}</li>
            {% include 'admin/cat.twig' with {'categories_arr': item} %}
        {% else %}
    <li>{{ item }}</li>
        {% endif %}

    {% endfor %}
</ul>
READ ALSO
многопользовательский сценарий

многопользовательский сценарий

есть блок кода (назовем его $foo->bar() ) который должен выполнится один раз и только один разкак это организовать в многопользовальском сценарии?

86
Платежная система и запись в БД?

Платежная система и запись в БД?

Использую ОктябрьСоздана страница заказа, где собирается вся информация

155
Ошибки при постоянном соединении - MySQL server has gone away

Ошибки при постоянном соединении - MySQL server has gone away

После того, как устанавливаю параметр p: при коннекте к БД, в nginx error логах начинают вылетать ошибкиКак понял, данные ошибки возникают когда...

102
Вставка массива в БД

Вставка массива в БД

Есть массив данных price, полученный с помощью serialize Выглядит так: s:6:"54437";s:4:"5443";s:6:"5442

111