0

twig で json オブジェクトを作成しようとしているので、ループ内に変数を設定する必要があります。何度も試みた結果、この方法を見つけましたが、レコードが 2 つしかない場合は問題ありません。レコードが 2 つ以上ある場合は、問題が発生します。

{% set data = [] %}
{% for artist in artists %}
     {% if loop.first %}
         {%
         set data = {
               id        : artist.id,
               text      : artist.name|capitalize() ~' '~ artist.surname|capitalize()
             }
         %}
     {% else %}
         {%
          set data = [data,{
              id        : artist.id,
              text      : artist.name|capitalize() ~' '~ artist.surname|capitalize()
            }]
         %}
     {% endif %}
 {% endfor %}
 {% set data = {results: data} %}
 {{ data|json_encode|raw }}

私が達成したいことは次のとおりです。

{results: [{id: 1, text: "bla"},{id: 2, text: "blabla"},{id: 3, text: "blablabla"}]}

代わりに私は得る:

{results:[[{id:1,text:"bla"},{id:2,text:"blabla"}],{id:3,text:"blablabla"}]}

気が狂わずに小枝の中にjsonオブジェクトを構築する方法はありますか?

私はすでにこの方法を試しました..しかし、オブジェクトを書き換え、最後の要素のみを変数に保存します:

{% set data = [] %}
{% for artist in artists %}
     {%
      set data = {
          id        : artist.id,
          text      : artist.name|capitalize() ~' '~ artist.surname|capitalize()
        }
     %}
{% endfor %}
{% set data = {results: data} %}
{{ data|json_encode|raw }}
4

1 に答える 1

1

マージを使用します。

{% set data = [] %}
{% for artist in artists %}
     {%
      set data = data|merge ([{
          id        : artist.id,
          text      : artist.name|capitalize() ~' '~ artist.surname|capitalize()
        }])
     %}
{% endfor %}
{% set data = {results: data} %}
{{ data|json_encode|raw }}
于 2013-08-12T05:11:18.540 に答える