在树枝中更新对象属性

时间:2011-10-10 23:32:56

标签: php twig

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

将以下对象传递给twig:

object
   property1
   property2

我想像这样更新property1:

{% set object.property1 = 'somenewvalue' %}

上面的代码不起作用,但是可以在树枝上做这样的事吗?如果没有,有没有办法编写扩展或宏来执行此操作?

5 个答案:

答案 0 :(得分:46)

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

{% set object = object|merge({'property1': 'somenewvalue'}) %}

答案 1 :(得分:4)

设置属性的一种可能方法是在对象中创建一个实际创建新属性的方法:

class Get extends StdClass 
  {

    protected function setProperty($name,$value = null)
    {
    $this->$name = $value;
    }

  }

答案 2 :(得分:1)

Twig有一个do标签,您可以这样做。

{% do yourObject.setFoo(value) %}

这对强制菜单模板中的菜单项为当前状态非常有用:

{% do tertiaryNav['photos'].setCurrent(true) %}

答案 3 :(得分:0)

如果你的属性是数组(object-> property ['key']),你可以这样做:

{% set arr = object.property|merge({"key":['some value']}) %}
{{ set(object, 'property', arr) }}

相当于:

this->property['key'][] = 'some value';

答案 4 :(得分:-3)

{{ set(object, 'property', value) }}