2016-10-05 7 views
0

これまでのところうまく動作するmailJetでメールを作成しています。私たちの現在の問題は、最初のループがうまく動作し、2番目の内部ループも正常に動作していますが、3番目のループはもう動作していないことです。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: Array values cannot be printed: tripSegment.breaks 

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

を私は{{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":[ 
       ] 
      }, 
     ] 
    ] 
} 

答えて

0

は、それがMailJetのWYSIWYGエディタにはバグがあることが判明しました。

複数のネストループは、HTMLブロック内で使用し、WYSIWYGエディタでは直接使用しないと機能します。

彼らはそれに取り組んでいます。

は、[1] https://app.mailjet.com/support/ticket/21e111b3be8630214cc082845f6cf976

2

あなたはtripSegment.breaksにループしたい場合、それは配列として表現されなければならないとしてではなく、オブジェクト。

私が使用するのと同じ値で私に役立つサンプルを作成することができました。我々はMailJetサポート[1]との議論にあったとして

'Vars' => [ 
     "trips"=>[ 
      'trips1' =>[ 
     'id'=> 123, 
     'totalDistance'=> 10, 
     'tripSegments' => [ 
      ['breaks' =>[['duration'=>1],['duration'=> 2]]], 
      ['breaks' =>[['duration'=>1],['duration'=> 2]]], 
      ['breaks' =>[['duration'=>1],['duration'=> 2]]] 
          ] 
         ]  
        ] 
     ] 
+0

私の質問を調整して、私のオブジェクト構造を見せてくれました。 –

1

私は、これはWYSIWYGエディタとは何の関係もありません見つけるには、Mailjetのテンプレート言語のバグのまま、簡単に再現性があります。使用ポストマンやエンドポイントを送信に次のJSONを送信するために、他のAPIテストツール(あなたは基本認証を経由して、あなたのAPIキーの資格情報を追加することを確認してください):

POST https://api.mailjet.com/v3/send

{ 
    "FromEmail": "[email protected]", 
    "FromName": "Me", 
    "Subject": "Test", 
    "MJ-TemplateLanguage": true, 
    "MJ-TemplateErrorReporting": "[email protected]", 
    "MJ-TemplateErrorDeliver": "deliver", 
    "Recipients": [ 
     { "Email": "[email protected]" } 
    ], 
    "Html-part": "<ul>{% for project in var:commissions.projects %}<li>{{project.name}}</li>{% endfor %}</ul>", 
    "Vars": { 
     "commissions": { "total": "235,000", "projects": [] } 
    } 
    } 

あなたが買ってあげますループをサイレントに通過するのではなく、コンテンツNo value for "commissions.projects"で電子メールでエラー報告を返します。

関連する問題