Twig模板 - 访问数组中的数组

时间:2015-03-27 11:42:43

标签: php arrays symfony twig templating

刚刚开始使用树枝模板,我遇到了一个问题。我有一个数组,我正在循环并从中提取数据,在这个数组中我有另一个我需要访问的数组(图像),问题是我似乎无法让它工作。

这是我有的饲料

0 => 
    array (size=8)
      'id' => int 1
      'url' => string 'http://localhost' (length=16)
      'image' => string '8cgbfenx2n1.png' (length=15)
      'type' => string 'image' (length=5)
  1 => 
    array (size=10)
      'id' => int 17
      'images' => 
        array (size=3)
          0 => string 'xjv5y4asev2.png' (length=15)
          1 => string 'kwwss8f6r34.gif' (length=15)
          2 => string '68yfnckk3c5.png' (length=15)
      'text' => string 'text' (length=4)
      'type' => string 'article' (length=7)

然后我循环并像这样访问

{%- if feed is not empty -%}
    {% for feedItems in feed %}

      <!-- article -->
      {% if feedItems.type == 'article' %}
            <!-- image -->
            <div class="gridTile-article-image">
              {% for image in feedItems.images %}
                {{ image }} <br />
              {% endfor %}
            </div>

      {% endif %}


    {% endfor %}
  {% endif %}

这不会引发错误但也不会输出任何内容,任何人都有任何想法必须实现这一点吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

看起来你正在尝试输出整个数组而不是其中一个索引。 feedItem.images是一个数组,如下所示:

 1 => 
array (size=10)
  'id' => int 17
  'images' => // The value of our index...
    array (size=3) // ..is an array
      0 => string 'xjv5y4asev2.png' (length=15)
      1 => string 'kwwss8f6r34.gif' (length=15)
      2 => string '68yfnckk3c5.png' (length=15)
  'text' => string 'text' (length=4)
  'type' => string 'article' (length=7)

我的猜测是你必须在最里面的块中引用images的索引。为此,正如此答案所示,请使用 attribute 功能:
Accessing array values using array key from Twig

所以你的代码就像这样:

{%- if feed is not empty -%}
{% for feedItems in feed %}

  <!-- article -->
  {% if feedItems.type == 'article' %}
        <!-- image -->
        <div class="gridTile-article-image">
          {% for image in feedItems.images %}
            {{ attribute(image, 0) }} <br /> // Assuming you want to print "xjv5y4asev2.png"
          {% endfor %}
        </div>

  {% endif %}


{% endfor %}
{% endif %}  

答案 1 :(得分:2)

所以我找出了我所缺少的东西。以下(原始)语法我工作得很好,但我做了一个非常愚蠢的人为错误。

<div class="gridTile-article-image">
  {% for image in feedItems.images %}
    {{image}}
  {% endfor %}
</div>

这个返回空白的原因是因为我查询的Feed中的图像数组实际上是空的!我正在看一个已经填充的阵列,但这不是“#39;”文章的类型。因此我在该区块内的代码没有返回任何图像,因为没有任何图像!

感谢您的帮助!