Mandrill API - Handlebar каждого цикла в таблице - PullRequest
0 голосов
/ 04 октября 2018

Я использую Mandrill API для отправки транзакционных писем через PHP.

Теперь я сталкиваюсь с проблемой, что при попытке перебрать несколько переменных отображается только последняя.

это моя переменная для global_merge_vars

array(
        array(
            'name' => 'products',
            'content' => array(
                array(
                    "name" => "Product 1",
                    "price" => "65€"
                ),
                array(
                    "name" => "Product 2",
                    "price" => "65€"
                ),
                array(
                    "name" => "Product 3",
                    "price" => "65€"
                )
            )               
        )
    );

Моя проблема связана с частью продуктов с массивом в качестве содержимого.

Итак, если я попробую следующее:

{{#each products}}
  {{name}} - {{price}}<br>
{{/each}}

Я получу

Product 1 - 65€
Product 2 - 65€
Product 3 - 65€

Пока все хорошо ...

но если я попытаюсьчтобы обернуть все это в таблицу, я всегда просто показываю последний элемент массива ...

<table>
  {{#each products}}
    <tr>
      <td>{{name}} - {{price}}</td>
    </tr>
    {{/each}}
</table>

приводит к:

Product 3 - 65€

На самом деле, я думаю, это простоглупая ошибка на моей стороне, но сейчас я понятия не имею, в чем проблема!

Так что спасибо всем заранее за помощь :)

___________________ ОБНОВЛЕНИЕ ________________________

Я также узнал, что это работает, если я помещаю всю таблицу в цикл, какследующее:

{{#each products}}
  <table>
    <tr>
      <td>{{name}} - {{price}}</td>
    </tr>
  </table>
{{/each}}

но это не совсем то, что я хочу, как было сказано ранее :)

1 Ответ

0 голосов
/ 12 октября 2018

Никогда раньше не использовал Handlebars, так что прости меня, если я что-то упустил, но я был заинтригован и попытался воспроизвести.

Версия руля: 4.0.12.

HTML:

<script id="header" type="text/x-handlebars-template">

    <table>
        {{#each content}}
             <tr>
                <td>{{name}} - {{price}}</td>
            </tr>
        {{/each}}
    </table>
</script>

Js (я просто запускаю json_encode() в вашем массиве):

<script>
var products = [
    {
        "name": "products",
        "content": [
            {"name": "Product 1", "price": "65"},
            {"name": "Product 2", "price": "65"},
            {"name": "Product 3", "price": "65"}
        ]
    }
];
var theTemplateScript = $("#header").html();
var theTemplate = Handlebars.compile(theTemplateScript);

$(document.body).append(theTemplate(products));

</script>

И получил ожидаемый результат:

Product 1 - 65
Product 2 - 65
Product 3 - 65
...