【问题标题】:Multi-dimensional arrays in Mandrill with handlebars带有把手的 Mandrill 中的多维数组
【发布时间】:2016-03-30 11:52:43
【问题描述】:

我正在尝试遍历一个多维数组,以获取属于订单项的产品的属性。它们看起来基本上是这样的:(我做了一个 json_encode 以便更容易阅读)

[{
    "rcpt": "email@email.com",
    "vars": [{
        "name": "SYSTEM",
        "content": "Bikes"
    }, {
        "name": "CUSTOMERSERVICE",
        "content": "(855-553-4889)"
    }, {
        "name": "IMAGE",
        "content": "http:\/\/www.url.com\/assets\/images\/chicago\/email\/dear_member.jpg"
    }, {
        "name": "LINKCOLOR",
        "content": "#3db7e4"
    }, {
        "name": "FACEBOOK",
        "content": "Bikes"
    }, {
        "name": "TWITTER",
        "content": "Bikes"
    }, {
        "name": "INSTAGRAM",
        "content": "Bikes"
    }, {
        "name": "CLOSING",
        "content": "Greetings"
    }, {
        "name": "item",
        "content": [{
            "lineItem": 1,
            "id": "3",
            "name": "24-Hour Pass Gift Certificate",
            "quantity": 2,
            "nameShort": "24-Hour",
            "type": "Gift Certificate",
            "image": "24hour_blank.jpg",
            "price": "9.95",
            "total": "19.90",
            "taxable": false,
            "giftCertificates": {
                "3204": {
                    "id": "3204",
                    "redemptionNumber": "xxxxx",
                    "type": "24-Hour"
                },
                "3205": {
                    "id": "3205",
                    "redemptionNumber": "xxxxx",
                    "type": "24-Hour"
                }
            }
        }, {
            "lineItem": 2,
            "id": "1",
            "name": "Annual Membership Gift Certificate",
            "quantity": 2,
            "nameShort": "Annual",
            "type": "Gift Certificate",
            "image": "annual_blank.jpg",
            "price": "75.00",
            "total": "150.00",
            "taxable": false,
            "giftCertificates": {
                "892": {
                    "id": "892",
                    "redemptionNumber": "xxxxxx",
                    "type": "Annual"
                },
                "893": {
                    "id": "893",
                    "redemptionNumber": "xxxxx",
                    "type": "Annual"
                }
            }
        }]
    }, {
        "name": "orderID",
        "content": 1220
    }, {
        "name": "giftMessage",
        "content": false
    }, {
        "name": "email",
        "content": "email@email.com"
    }, {
        "name": "transactionDate",
        "content": "12\/23\/2015"
    }, {
        "name": "transactionTime",
        "content": "12:21 pm"
    }, {
        "name": "salesTaxTotal",
        "content": 0
    }, {
        "name": "salesTaxRatePercent",
        "content": "6.250"
    }, {
        "name": "TransactionAmount",
        "content": "169.90"
    }, {
        "name": "account_number",
        "content": "XXXX1111"
    }, {
        "name": "card_type",
        "content": "Visa"
    }, {
        "name": "firstName",
        "content": "tetete"
    }, {
        "name": "lastName",
        "content": "tethuhhu"
    }, {
        "name": "address",
        "content": "295 Place St"
    }, {
        "name": "city",
        "content": "Brooklyn"
    }, {
        "name": "state",
        "content": "NY"
    }, {
        "name": "zip",
        "content": "11238"
    }, {
        "name": "country",
        "content": "US"
    }, {
        "name": "phone",
        "content": "8888888888"
    }, {
        "name": "transactionId",
        "content": "xxxxxx"
    }, {
        "name": "shipToFirstName",
        "content": "tetete"
    }, {
        "name": "shipToLastName",
        "content": "tethuhhu"
    }, {
        "name": "shipToAaddress",
        "content": "295 Place St"
    }, {
        "name": "shipToCity",
        "content": "Brooklyn"
    }, {
        "name": "shipToState",
        "content": "NY"
    }, {
        "name": "shipToZipCode",
        "content": "11238"
    }, {
        "name": "ShipToCountry",
        "content": "US"
    }, {
        "name": "ShipToCountry",
        "content": "US"
    }]
}]

所以我试图打印出每张礼券的类型和兑换号码。当我像这样遍历 {{ giftCertificates }} 时:

{{#each giftCertificates}}
    {{type}} {{redemptionNumber}}
{{/each}}

我得到了其中一个订单项,但没有得到另一个。我猜也许当它再次循环时它被覆盖了?但我也尝试遍历 {{ item }} 并抓取 {{ giftCertificates.type }} 和 {{ giftCertificates.redemptionNumber }} ,但这也不起作用。从每个订单项中获取所有这些的正确方法是什么?

感谢您的帮助。

【问题讨论】:

    标签: arrays multidimensional-array handlebars.js mandrill


    【解决方案1】:

    我知道这是一个非常古老的问题,但是:

    • 您可以使用{{this.proprietyName}}获取类型和编号:
    {{#each giftCertificates}}
       {{this.892.type}}
    {{/each}}
    
    • 别忘了把这个添加到山魈messageo
    "merge": true,
    "merge_language": "handlebars", 
    

    另外,数据结构也不理想:

    giftCertificates[
        {
         "id": "892",
         "redemptionNumber": "xxxxxx",
         "type": "Annual"
        }, 
        {
         "id": "893",
         "redemptionNumber": "xxxxxx",
         "type": "Annual"
        }
    ]
    

    会更容易处理。

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2015-06-17
      • 2015-12-29
      • 2015-08-14
      • 2019-03-10
      • 2016-07-29
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多