在树枝中使用字符串变量作为对象名称

using a string variable as object name in twig

Twig 中有没有办法使用变量作为对象名?

像这样:如果定义了 foo 则使用 foo 的值作为对象的名称,如果没有定义则使用任意字符串?

这个例子没有用,但我希望它能说明这个想法:

{% for block in [foo is defined ? foo : 'someThing'].someProperty %}

因此,如果未定义 foo,结果将是

someThing.someProperty

如果 foo 是字符串“someThingElse”,它将是

someThingElse.someProperty

每个变量都存储在特殊变量 _context 中,将其与过滤器 default 链接起来以处理 foo 可能未定义的问题,

{% for block in _context[foo|default('someThingElse')].someProperty %}
    {{ block }}
{% endfor %}

demo