如何在 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}
我有一个自定义模块。哪个应该向客户发送一些数据。示例数据:
$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}