如何在 Prestashop 1.6 的电子邮件模板中显示数组中的值

How to display values from array in email template in Prestashop 1.6

我有一个自定义模块。哪个应该向客户发送一些数据。示例数据:

$log[] = array('pid' => '1000', 'price' => '0.00');
$this->sendMail($log);

还有我的 senMail 函数:

public function sendMail($mailMessage) {
        $id_lang = (int) $this->context->language->id;
        $iso_lang = Language::getIsoById($id_lang);

        if (!is_dir(dirname(__FILE__) . '/mails/' . Tools::strtolower($iso_lang))) {
            $id_lang = Language::getIdByIso('pl');
        }

        Mail::Send(
                $id_lang,
 'notification',
 Mail::l('Notification from Hurto module', (int) $this->context->language->id),
 array('{message}' => Tools::nl2br($mailMessage)),
 Configuration::get('PS_SHOP_EMAIL'),
 null,
 null,
 null,
 null,
 null,
 _PS_MODULE_DIR_ . $this->name . '/mails/'
        );
    }

邮件已发送,但{message} 未显示数组中的所有数据。在邮件中我只有一个值——1000。还有一件事。如何显示数组中的所有数据?

谢谢

---编辑

Array ( [0] => Array ( [pid] => 1000 [price] => 0.00 ) )

首先,您要将一个数组传递给 Tools::nl2br,它只能用于字符串。

您有 2 个选项来做您想做的事。在 Mail::Send 之前格式化消息(但不能根据主题有不同的方面)或将数组传递给 smarty 并在 tpl 中执行。

选项 1:

public function sendMail($mailMessage) {
    $id_lang = (int) $this->context->language->id;
    $iso_lang = Language::getIsoById($id_lang);

    if (!is_dir(dirname(__FILE__) . '/mails/' . Tools::strtolower($iso_lang))) {
        $id_lang = Language::getIdByIso('pl');
    }

    $message = "";
    foreach($mailMessage as $m){
        $message .= "pid {$m['pid']} price {$m['price']}".PHP_EOL;
    }

    Mail::Send(
            $id_lang,
            'notification',
            Mail::l('Notification from Hurto module', (int) $this->context->language->id),
            array('{message}' => Tools::nl2br($message)),
            Configuration::get('PS_SHOP_EMAIL'),
            null,
            null,
            null,
            null,
            null,
            _PS_MODULE_DIR_ . $this->name . '/mails/'
        );
}

选项 2:

public function sendMail($mailMessage) {
    $id_lang = (int) $this->context->language->id;
    $iso_lang = Language::getIsoById($id_lang);

    if (!is_dir(dirname(__FILE__) . '/mails/' . Tools::strtolower($iso_lang))) {
        $id_lang = Language::getIdByIso('pl');
    }

    Mail::Send(
            $id_lang,
            'notification',
            Mail::l('Notification from Hurto module', (int) $this->context->language->id),
            array('{message}' => $mailMessage),
            Configuration::get('PS_SHOP_EMAIL'),
            null,
            null,
            null,
            null,
            null,
            _PS_MODULE_DIR_ . $this->name . '/mails/'
        );
}

并且在 tpl 中:

{foreach from=$message item=m}
    {$m['pid']} - {$m['price']} <br />
{/foreach}