Twig - 为什么它不允许我们设置对象/数组值?

时间:2016-08-02 08:54:10

标签: arrays symfony object twig

我对Twig决定不允许通过{% set entry.depth = 1 %}设置数组和对象属性的值感到非常困惑。

例如,以下代码将出错:

Unexpected token "punctuation" of value "." ("end of statement block" expected)

会导致错误:

{% set entry['depth'] = 1 %}

另外,以下方式也会出错(我知道twig不喜欢使用):

{{1}}

因此,这实际上意味着我们无法更改对象和数组的属性。我坦率地发现这个奇怪的事情。

有人可以解释一下这背后的决定吗?也许如果我得到一个技术上的原因,为什么它不可能使它不那么令人困惑。

编辑:感谢您提供解决方案,在您必须使用合并而不仅仅是能够覆盖变量这一事实背后的原因之后,我更多。

1 个答案:

答案 0 :(得分:6)

在这方面,Twig有点奇怪。您需要使用merge过滤器。

{% set entry = entry|merge({'depth': 1}) %}