2

これまでのところ正常に動作するmailJetを使用して電子メールを作成しています。私たちの現在の問題は、ループ内のループ内にループを持ちたい (つまり、ネストされたループ) ということです。

{% for trip in var:trips %}
{{trip.id}}

{% for tripSegment in trip.tripSegments %}

{% for tripBreak in tripSegment.breaks %}
{{tripBreak.duration}}
{% endfor %}

{% endfor %}

Distance: {{trip.totalDistance}} km

{% endfor %}

これはテンプレートにあります。ブレークで内側のループを削除すると、すべて問題ありません。

テンプレート エラー レポートを有効にすると、次のメッセージが表示されます。

X-MJ-ErrorMessage: "tripSegment.breaks" is not an array value

しかし、{{tripSegment.breaks}} で印刷しようとすると、次のメッセージが表示されます。

X-MJ-ErrorMessage: Array values cannot be printed: tripSegment.breaks

フィールドは、trips や tripSegments のように明らかに配列であるため、基本的には機能するはずです。

MailJet のネストされたループで間違っていることは何ですか?

編集:

私のオブジェクト構造は、Mailjet に送信すると次のようになります。

"Vars": {
    "trips": [
        "id": 1,
        "tripSegments":[
            {
                "id":2,
                "distance": 100,
                "breaks":[
                    {
                        "duration":15
                    },{
                        "duration":20
                    }
                ]
            },{
                "id":3,
                "distance": 200,
                "breaks":[
                    {
                        "duration":10
                    },{
                        "duration":30
                    }
                ]
            },{
                "id":4,
                "distance": 200,
                "breaks":[
                ]
            },
        ]
    ]
}
4

3 に答える 3

3

tripSegment.breaks でループしたい場合は、オブジェクトではなく配列として表す必要があります。

私はあなたが使用するのと同じ値で私のために働くサンプルを作成することができました.

'Vars' => [ 
        "trips"=>[ 
            'trips1' =>[
        'id'=> 123,
        'totalDistance'=> 10, 
        'tripSegments' => [ 
            ['breaks' =>[['duration'=>1],['duration'=> 2]]],
            ['breaks' =>[['duration'=>1],['duration'=> 2]]],
            ['breaks' =>[['duration'=>1],['duration'=> 2]]]
                          ]
                       ]    
                  ]
      ]
于 2016-10-06T14:02:15.947 に答える