将数组传递给树枝中的包含

时间:2015-11-18 11:56:14

标签: php twig twig-extension

好像参数没有正确传递......

    {% set items = {
        item: {
            'id': '1',
            'brand': 'client1',
            'description': 'solutions.client1.description' | trans},
        item: {
            'id':  '2',
            'brand': 'client2',
            'description': 'solutions.client2.description' | trans}
    } %}

    {% include 'site/case-excerpt.html.twig'
        with {'id': items.item.id,
              'brand': items.item.brand,
              'description': items.item.description
        }
  %}

然后在site/case-excerpt.html.twig文件中:

{% include 'site/testimonials/item.html.twig'
     with {'id': id,
           'brand': brand,
           'description': description
          }
%}

site/testimonials/item.html.twig文件中:

<div class="carousel-item {{ id }}">
    <img src="images/brands/{{ brand }}.jpg">
    <p>
        {{ description }}
    </p>
</div>

预期输出如下:

<div class="carousel-item 1">
    <img src="images/brands/client1.jpg">
    <p>
        I'm the content of the translation for the first client
    </p>
</div>
<div class="carousel-item 2">
    <img src="images/brands/client2.jpg">
    <p>
        I'm the content of the translation for the second client
    </p>
</div>

我放弃了通过items手动循环的想法,因为似乎可以很好地完成它,here for example

2 个答案:

答案 0 :(得分:2)

在您提供的示例中,它们遍历对象,并为每个对象包含一个部分。

您正在使用items.item。 Twig不知道你想要什么,同样,创建一个具有相同键item的数组,将无法正常工作

{% set items = [{
            'id': '1',
            'brand': 'client1',
            'description': 'solutions.client1.description' | trans},
            {
            'id':  '2',
            'brand': 'client2',
            'description': 'solutions.client2.description' | trans}
    ] %}

然后循环浏览您的项目并包含部分

{% for item in items %}
    {% include 'site/case-excerpt.html.twig'
            with {'id': item.id,
                  'brand': item.brand,
                  'description': item.description
            }
{% endfor %}

答案 1 :(得分:0)

这是最终的工作代码

基础文件。数组已定义并传递给include。

    {% set items = [{
            'id': '1',
            'brand': 'euromaster',
            'description': 'solutions.euromaster.description' | trans},
        {
            'id':  '2',
            'brand': 'logo-havas-voyages',
            'description': 'solutions.havas.description' | trans}
    ] %}

    {% include 'site/case-excerpt.html.twig'
        with {'items': items
        }
    %}

然后在site/case-excerpt.html.twig文件中: 我们在数组上循环并包含部分

{% for item in items %}
    {% include 'site/testimonials/item.html.twig'
         with {'id': item.id,
               'brand': item.brand,
               'description': item.description
              }
    %}
{% endfor %}

site/testimonials/item.html.twig文件中:

<div class="carousel-item {{ id }}">
    <img src="images/brands/{{ brand }}.jpg">
    <p>
        {{ description }}
    </p>
</div>

谢谢@Mazzy!