twig,不能循环变量名调用的散列

twig, cannot loop hash called by variable name

为什么这不起作用:

{% set relations = [{'cat':'friends','foo':'bar1'},{'cat':'enemies','foo':bar2},....] %}
{% set friends = [{'firstName':'John', 'lastName':'Goodman'},....] %}
{% set enemies = [{'firstName':'Ron', 'lastName':'Badguy'},....] %}

{% for relCat in relations %}
    {% set list = relCat.cat %}
    {% for person in list %}
        {{ person.firstName }}
    {% endfor %} 
{% endfor %}

我承认我对 twig 很陌生,所以我真的搜索了又搜索,但找不到解决我的问题的方法(我认为是微不足道的)....

我希望有人能帮忙 - 我为此失去了所有的头发,谢谢,鲁道夫

变量的顺序很重要 所以首先:敌人和朋友:

{% set friends = [{'firstName':'John', 'lastName':'Goodman'}] %}
{% set enemies = [{'firstName':'Ron', 'lastName':'Badguy'}] %}

然后设置关系:再次friends不是'friends',第一个是变量,第二个是字符串:

{% set relations = [{'cat':friends,'foo':'bar1'},{'cat':enemies,'foo':bar2}] %}

{% for relCat in relations %}
    {% set list = relCat.cat %}
    {% for person in list %}
        {{ person.firstName }}
    {% endfor %} 
{% endfor %}

这应该有效

fiddle

如果您真的需要保留字符串,您也可以使用_context变量:

{% set relations = [{'cat':'friends','foo':'bar1'},{'cat':'enemies','foo':bar2}] %}
{% set friends = [{'firstName':'John', 'lastName':'Goodman'}] %}
{% set enemies = [{'firstName':'Ron', 'lastName':'Badguy'}] %}

{% for relCat in relations %}
    {% set list = _context[relCat.cat] %} {# <--- here #}
    {% for person in list %}
        {{ person.firstName }}
    {% endfor %} 
{% endfor %}

fiddle