有沒有更新樹枝中對象屬性的方法?更新樹枝中的對象屬性
象下面的對象傳遞給小枝:
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