我使用循环显示其属性“place”等于2的图像。所以我执行以下操作。
{% for image in entity.images %}
{% if image.place == 2 %}
...
{% endif %}
{% endfor %}
这是一个非常消耗的过程。所以我想要的是能够直接识别项目。例如,为了获得属性“place”等于2的图像,我希望得到像{{ entity.images|image.place[2] }}
这样的东西。不幸的是,这不起作用。希望有人能提供帮助。先感谢您。干杯。马克
答案 0 :(得分:2)
不,做这样的事情没有灵丹妙药,即使你想为你的实体添加getImageByFilter()
方法,你也需要遍历图像集来获得正确的图像。
使用树枝助手(我不推荐)。
请记住,如果您尝试从与主要实体相关的集合中获取给定实体,则需要遍历该集合以查找适合您约束的集合。
<强>更新强>
另外,请查看Adding a condition的twig 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等属性。