使用变量设置Twig对象属性名

3

我需要在Twig中动态设置对象属性的名称:

{% set featureId = feature.id %}
{% set gridEnabled = gridEnabled|merge({featureId: true}) %}

但是这将"featureId"设置为gridEnabled的属性。有没有一种方法告诉Twig,featureId是一个变量?我很惊讶它将其解释为没有引号的字符串。

后续问题:这是完整的设置--我能够进一步缩减为"feature.id"。这些行可以合并吗?

{% set gridEnabled = grid.enabled %}
{% set gridEnabled = gridEnabled|merge({(feature.id): true}) %}
{% set grid = grid|merge({'enabled':gridEnabled}) %}
1个回答

8
非常容易,实际上,
{% set gridEnabled = gridEnabled|merge({(featureId): true}) %}

(edit) 跟进
{% set grid = grid | merge({'enabled' : (grid.enabled | merge({(featureId):1,}))}) %}

这就是我上面所写的。它不起作用——将属性名称设置为“featureId”——哦,等等,你把它放在括号里了——就是这个原因吗?你知道为什么会起作用吗? - scader
因此需要额外的两个括号,这将强制Twig首先插值变量。 - DarkBee
我添加了一个后续,那也能减少吗? - scader
谢谢!这有助于我理解Twig需要先处理什么。 - scader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接