2017-12-28 11 views
1

にオブジェクトを追加する私はこれがあるべき複数のレベルを持つオブジェクト私は、サブオブジェクトとして、複数のオブジェクトに新しいオブジェクトを追加する必要が 小枝:どのように小枝のテンプレートでは、マルチレベルのオブジェクト

{% 
    set data = { 
    'first': 'First', 
    'data': { 
     'val_1': 'val_1' 
     } 
    } 
%} 

を持っています

{% 
    set data = { 
    'first': 'First', 
    'data': { 
     'val_1': 'val_1', 
     'val_2': 'val_2' 
     } 
    } 
%} 

答えて

0

まず、小枝用語で、そのオブジェクトまたはキーと値のアレイが、ない:データval_2: val_2

期待される結果に加え(see Twig's documentation of literals)。

アイテムをハッシュに追加することはできません。 {% set data.second = 'Second' %}を実行してください。代わりに、あなたはmerge filterを使用する必要があります。

{% 
    set data = data|merge({ 
     second: 'Second', 
    }) 
%} 

{{ dump(data) }} 

{# Prints this: 

array(3) { 
    ["first"]=> 
    string(5) "First" 
    ["data"]=> 
    array(1) { 
    ["val_1"]=> 
    string(5) "val_1" 
    } 
    ["second"]=> 
    string(6) "Second" 
} 

#} 

ので、ハッシュ内のハッシュに項目を追加するために、あなたは二回マージフィルタを使用する必要があります。

{% 
    set data = data|merge({ 
     data: data.data|merge({ 
      val_2: 'val_2', 
     }), 
    }) 
%} 

{# Prints this: 

array(3) { 
    ["first"]=> 
    string(5) "First" 
    ["data"]=> 
    array(1) { 
    ["val_1"]=> 
    string(5) "val_1" 
    ["val_2"]=> 
    string(5) "val_2" 
    } 
    ["second"]=> 
    string(6) "Second" 
} 

#} 

あなたがこのの多くを行う場合Twigの可変操作のようなものであれば、そのコードの一部がコントローラーやモデルなどの中に入れられる方が良いかもしれないというサインであるかもしれません。