TWIG - 如何在没有循环的情况下显示具有特定属性的项目

时间:2013-08-24 11:39:25

标签: symfony twig

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

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

这是一个非常消耗的过程。所以我想要的是能够直接识别项目。例如,为了获得属性“place”等于2的图像,我希望得到像{{ entity.images|image.place[2] }}这样的东西。不幸的是,这不起作用。希望有人能提供帮助。先感谢您。干杯。马克

1 个答案:

答案 0 :(得分:2)

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

使用树枝助手(我不推荐)。

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

<强>更新

另外,请查看Adding a conditiontwig for loop documentation示例,它可能会帮助您跳过整个集合的迭代。

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

来自文档,

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

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

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