2016-10-05 7 views
0

мы строим наши письма с mailJet, который отлично работает до сих пор. Наша текущая проблема заключается в том, что мы хотели бы иметь цикл в цикле внутри цикла (так что вложенные циклы), первый цикл работает отлично, а также второй внутренний цикл работает нормально, но третий не работает больше: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 

и поле определенно представляет собой массив, например, поездки или tripSegments, поэтому в основном он должен работать.

Что я делаю неправильно для вложенных циклов в MailJet?

Edit:

Моя структура объекта, я посылаю 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 [1], то получается, что есть ошибка в редакторе WYSIWYG в MailJet.

Многочисленные вложенные циклы работают, если вы используете их в блоке HTML, а не непосредственно в редакторе WYSIWYG.

Они работают над этим.

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

2

Если вы хотите, чтобы петля на 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]]] 
          ] 
         ]  
        ] 
     ] 
+0

Я скорректировал свой вопрос, чтобы показать вам мою структуру объекта, которая для меня выглядит совершенно нормально –

1

Я считаю, что это не имеет ничего с WYSIWYG редактор, остается ошибка в языке шаблонного MailJet, и легко воспроизводимым. Использование Почтальон или другое тестирование API инструмент для отправки следующей JSON в отправить конечную точку (убедитесь, что вы добавить свой API ключ учетных данных с помощью Basic Auth):

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", а не просто прохождением через петлю.

 Смежные вопросы

  • Нет связанных вопросов^_^