有没有更新树枝中对象属性的方法?更新树枝中的对象属性
象下面的对象传递给小枝:
object
property1
property2
我想更新property1是这样的:
{% set object.property1 = 'somenewvalue' %}
上面的代码不工作,但它是可以做到的像这样的小枝?如果没有,有没有办法写一个扩展或宏来做到这一点?
有没有更新树枝中对象属性的方法?更新树枝中的对象属性
象下面的对象传递给小枝:
object
property1
property2
我想更新property1是这样的:
{% set object.property1 = 'somenewvalue' %}
上面的代码不工作,但它是可以做到的像这样的小枝?如果没有,有没有办法写一个扩展或宏来做到这一点?
一种可能的方法来设置属性是创建的对象的方法,实际上创造了新的属性:
class Get extends StdClass
{
protected function setProperty($name,$value = null)
{
$this->$name = $value;
}
}
我不得不将这个方法公开,但它确实是一个很好的解决方案 –
什么?那么你是如何将这个来自Twig的? –
@BrunoSantos'object.setProperty(“propertyName”,3)'这将设置/创建'propertyName'为'3' –
我有我的knp菜单模板中存在同样的问题。我想用label
块渲染备用字段,而不复制它。当然,底层对象需要一个属性的setter。
{%- block nav_label -%}
{%- set oldLabel = item.label %}
{%- set navLabel = item.getExtra('nav_label')|default(oldLabel) %}
{{- item.setLabel(navLabel) ? '' : '' }}
{{- block('label') -}}
{{- item.setLabel(oldLabel) ? '' : '' }}
{%- endblock -%}
如果你的属性是数组(对象 - >属性[ '关键']),你可以做这样的事情:
{% set arr = object.property|merge({"key":['some value']}) %}
{{ set(object, 'property', arr) }}
这相当于:
您节省了我的时间:) –
再次,只有yii2 – certainlyakey
请忽略下面的答案,这是非常过时的,不应该再被接受的答案。不幸的是,我不能删除它,因为它是公认的答案。 – rdjs
@rdjs谢谢你让我知道!我已经交换了接受的答案! – F21
接受的答案只适用于数组和哈希,而不是对象。 – Duane