2017-12-28 31 views
0

私はカスタムモジュールを持っています。顧客にデータを送信する必要があります。サンプルデータ: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/' 
     ); 
    } 

メールは送信しているが、{メッセージ}がアレイからすべてのデータを表示しません。郵便では私はただ一つの価値しか持っていません - 1000。もう一つはあります。配列からすべてのデータを表示するには?

おかげ

---編集

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

答えて

3

まず、あなたはツールに配列を渡している::文字列のみで使用する必要があり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} 
関連する問題