在树枝中更新对象属性

F21*_*F21 35 php twig

有没有办法在树枝中更新对象的属性?

像下面这样的对象传递给twig:

object
   property1
   property2
Run Code Online (Sandbox Code Playgroud)

我想像这样更新property1:

{% set object.property1 = 'somenewvalue' %}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,但是可以在树枝上做这样的事情吗?如果没有,有没有办法写一个扩展或宏来做到这一点?

isq*_*qua 47

您可以通过合并对象来实现:

{% set object = object|merge({'property1': 'somenewvalue'}) %}
Run Code Online (Sandbox Code Playgroud)

  • `合并过滤器仅适用于数组或散列 (38认同)
  • 这确实不应该是公认的答案 - 根据 Twig 错误输出:合并过滤器仅适用于数组或“Traversable”,将“object”作为第一个参数。@Baishu 下面的答案适用于我的对象用例 (5认同)
  • 那么,为什么这是公认的答案呢?这只适用于某些Twig版本吗? (3认同)
  • 它不应该是公认的答案,因为它没有回答“如何从对象更新属性”的问题。 (2认同)

Bai*_*shu 6

Twig 有一个do标签,允许你这样做。

{% do foo.setBar(value) %}
Run Code Online (Sandbox Code Playgroud)