使用 Symfony 和 Twig 循环
Loop with Symfony and Twig
我有两个 for 循环。一个包含 table 中所有数据的数组,另一个包含一个数组,其中外键是第一个数组中的 table。
我想看看有多少匹配项并检查它,但循环不起作用。
{% if comunidades %}
{% for comunidad in comunidades %}
{% if likes %}
{{ likes[0].comunidad.id }}
{{ likes[1].comunidad.id }}
--{{ comunidad.id }}--
{% if comunidad.id in likes|keys %}
OK
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
这会打印:
1 3 --3--
1 3 --2--
1 3 --1-- OK
谢谢
因为likes数组的key是一个对象。你应该只使用对象的 id 使用 map filter 像:
{% for comunidad in comunidades %}
{% if likes %}
{{ likes[0].comunidad.id }}
{{ likes[1].comunidad.id }}
--{{ comunidad.id }}--
{% if comunidad.id in likes|map(p => p.comunidad.id) %}
OK
{% endif %}
{% endif %}
{% endfor %}
输出将是:
1
3
--3--
OK
1
3
--2--
1
3
--1--
OK
所以只有第一个和最后一个元素匹配
希望对您有所帮助
我有两个 for 循环。一个包含 table 中所有数据的数组,另一个包含一个数组,其中外键是第一个数组中的 table。
我想看看有多少匹配项并检查它,但循环不起作用。
{% if comunidades %}
{% for comunidad in comunidades %}
{% if likes %}
{{ likes[0].comunidad.id }}
{{ likes[1].comunidad.id }}
--{{ comunidad.id }}--
{% if comunidad.id in likes|keys %}
OK
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
这会打印:
1 3 --3--
1 3 --2--
1 3 --1-- OK
谢谢
因为likes数组的key是一个对象。你应该只使用对象的 id 使用 map filter 像:
{% for comunidad in comunidades %}
{% if likes %}
{{ likes[0].comunidad.id }}
{{ likes[1].comunidad.id }}
--{{ comunidad.id }}--
{% if comunidad.id in likes|map(p => p.comunidad.id) %}
OK
{% endif %}
{% endif %}
{% endfor %}
输出将是:
1
3
--3--
OK
1
3
--2--
1
3
--1--
OK
所以只有第一个和最后一个元素匹配
希望对您有所帮助