2013-09-08 5 views
1

Небольшой вопрос Twig относительно массива в доступе к массиву. У меня есть следующий скрипт, который по существу содержит категории, а затем подкатегории, связанные с каждой категорией.Массив в массиве Twig

{% for category in categories %} 

    <li> 
     <a href="#">{{ category.name }}</a> 

     {% if category.subcategories|length > 0 %} 

     {% set subcategories = category.subcategories %} 

     <ul> 
      {% for subcategory in subcategories %} 

      <li> 
       <a href="#">{{ subcategory.name }}</a> 
      </li> 

      {% endfor %} 
     </ul> 
     {% endif %} 
    </li> 

{% endfor %} 

В приведенном выше скрипте не отображаются подкатегории, и я понятия не имею, почему. Основная проблема заключается в том, что цикл for никогда не доступен. Сбрасывая переменную подкатегорий сразу после ее установки, она показывает ожидаемый, что он содержит правильный массив с одним элементом.

Любые идеи?

сбросов переменной Подкатегории показывает:

array (size=2) 
    0 => 
    array (size=2) 
     'id' => int 1 
     'name' => string 'Dolls' (length=5) 
    1 => 
    array (size=2) 
     'id' => int 2 
     'name' => string 'Test' (length=4) 
+2

Почему вы не используете напрямую '{% для подкатегории категории.subcategories%}'? – cheesemacfly

+0

Пробовал это изначально, но думал, что я, возможно, слишком много просил Твига. В любом случае, нашел ответ, спасибо за оптимизацию. –

+0

Этот код хорош. Если ваша категория имеет одну или несколько подкатегорий, этот код должен печатать их. Пересмотрите, у вас действительно есть подкатегории. – mmoreram

ответ

1

Проблема была на самом деле не связана с Twig вообще в этом случае, но к классу, который был применен к Li элемента, состоявшихся все вместе, что только отображал содержимое, когда к нему был применен конкретный класс.

В очень странном виде узел просто удалился JS, когда класс не был применен, поэтому firebug не подбирал его. В конце концов наткнулся на него на источник страницы, и именно так я добрался до решения.