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

Mat*_*agh 4 arrays object symfony twig

我对Twig决定不允许通过设置数组和对象属性的值感到非常困惑set.

例如,以下代码将出错:

{% set entry.depth = 1 %}

会导致错误:

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

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

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

所以这实际上意味着我们无法改变对象和数组的属性.坦率地说,我发现这很离奇.

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

编辑:感谢您的解决方案,我更多的是在你必须使用合并而不仅仅是能够覆盖变量的事实背后的推理.

小智 6

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

{% set entry = entry|merge({'depth': 1}) %}
Run Code Online (Sandbox Code Playgroud)