0

我使用循环显示其属性“place”等于 2 的图像。所以我执行以下操作。

{% for image in entity.images %}
   {% if image.place == 2 %}
       ...                                          
   {% endif %}
{% endfor %}

这是一个相当耗费精力的过程。所以我想要的是能够直接识别项目。例如,要获取其属性“地点”等于 2 的图像,我希望拥有类似{{ entity.images|image.place[2] }}. 不幸的是,这不起作用。希望有人可以提供帮助。先感谢您。干杯。马克

4

1 回答 1

2

不,没有灵丹妙药可以做这样的事情,即使你想为getImageByFilter()你的实体添加一个方法,你也需要遍历图像集合以获得正确的图像。

使用树枝助手(我不推荐)也是如此。

请记住,如果您尝试从与您的主要实体相关的集合中获取给定实体,则需要遍历该集合以查找适合您的约束的实体。

更新,

此外,请查看添加twig for 循环文档的条件示例,它可能会帮助您跳过对整个集合的迭代。

正如这个 Github Twig Repository issue中所解释的,不可能在循环中中断或继续。

从文档中,

与 PHP 不同,它不可能在循环中中断或继续。但是,您可以在迭代期间过滤序列,从而允许您跳过项目。以下示例跳过所有不活动的用户:

<ul>
    {% for element in entity.elements if element.isOk %}
        <li>{{ element.attribute }}</li>
    {% endfor %}
</ul>

优点是特殊循环变量将正确计数,因此不会计算未迭代的用户。请记住,使用循环条件时不会定义像 loop.last 这样的属性。

于 2013-08-24T12:00:15.493 回答