首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MailJet嵌套循环

MailJet嵌套循环
EN

Stack Overflow用户
提问于 2016-10-05 08:37:18
回答 3查看 2.5K关注 0票数 2

我们正在使用mailJet构建我们的电子邮件,到目前为止,它运行得很好。我们当前的问题是,我们希望在一个循环(所以嵌套的循环)中有一个循环,第一个循环工作得很好,第二个内循环工作得很好,但是第三个循环不再工作了:

代码语言:javascript
复制
{% 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 %}

这是我们的模板。如果我用断口去掉内环,一切都很好。

如果启用模板错误报告,则会收到以下消息:

代码语言:javascript
复制
X-MJ-ErrorMessage: "tripSegment.breaks" is not an array value

但是,如果我试图用{{tripSegment.breaks}打印它,就会得到消息:

代码语言:javascript
复制
X-MJ-ErrorMessage: Array values cannot be printed: tripSegment.breaks

而且这个字段显然是一个数组,比如trips或tripSegments,所以基本上它应该能工作。

对于MailJet中的嵌套循环,我做错了什么?

编辑:

我发送给Mailjet的对象结构如下所示:

代码语言:javascript
复制
"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":[
                ]
            },
        ]
    ]
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-13 07:17:53

当我们与MailJet Support 1进行讨论时,发现MailJet的WYSIWYG编辑器中存在一个bug。

如果在HTML块中使用,而不是直接在WYSIWYG编辑器中使用,则多个嵌套循环可以工作。

他们正在做这件事。

1

票数 0
EN

Stack Overflow用户

发布于 2016-10-06 14:02:15

如果要在tripSegment.breaks上循环,则应该将其表示为数组而不是对象。

我成功地创建了一个为我工作的示例,其值与您使用的值相同。

代码语言:javascript
复制
'Vars' => [ 
        "trips"=>[ 
            'trips1' =>[
        'id'=> 123,
        'totalDistance'=> 10, 
        'tripSegments' => [ 
            ['breaks' =>[['duration'=>1],['duration'=> 2]]],
            ['breaks' =>[['duration'=>1],['duration'=> 2]]],
            ['breaks' =>[['duration'=>1],['duration'=> 2]]]
                          ]
                       ]    
                  ]
      ]
票数 3
EN

Stack Overflow用户

发布于 2017-03-20 17:49:01

我发现这与WYSIWYG编辑器无关,在Mailjet的模板语言中仍然是一个bug,而且很容易复制。使用Postman或其他API测试工具向发送端点发送以下JSON (确保通过Basic Auth添加API密钥凭据):

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

代码语言:javascript
复制
{
    "FromEmail": "me@example.com",
    "FromName": "Me",
    "Subject": "Test",
    "MJ-TemplateLanguage": true,
    "MJ-TemplateErrorReporting": "me@example.com",
    "MJ-TemplateErrorDeliver": "deliver",
    "Recipients": [
        { "Email": "me@example.com" }
    ],
    "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",而不是它只是简单地通过循环默默。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39869123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档