web-dev-qa-db-ja.com

メールのHTMLメッセージ本文を準備するためにテンプレートファイルを使用するにはどうすればよいですか?

テンプレートファイルを使用して、テーブルタグを使用して電子メールメッセージの本文を準備し、送信されたフォームデータをユーザー別にテーブルの行に配置します。 hook_mail()を次のコードで実装しました。

function get_price_mail($key, &$message, $params) {
  switch ($key) {
    case 'mail_to_eberhard':
      $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes';
      $message['subject'] = t('Factory Purchase - ').\Drupal::config('system.site')->get('name');;
      $message['body'][] = $params['message'];
      break;
   }
}

テンプレートファイル(get_price/templates/mail-to-eberhard.html.twig)を作成しましたが、メッセージ本文でテンプレートファイルを使用していません。

Drupal 8でテンプレートファイルを使用する方法を教えてください。

1
Mohsin Khan

だからここに答えがあります:あなたのモジュールのフックテーマ関数の中でこのコードを使用してください

function get_price_theme() {
  return [
    'mail_to_eberhard' => array (
        'template' => 'mail-to-eberhard',  // TWIG File
        'variables' => array('submitted_data'=>[]),
    ),
  ];
} 

ここで、variablesは、テンプレートファイルに送信するパラメーターの配列です。モジュールテンプレートフォルダー内にmail-to-eberhard.html.twigという名前のテンプレートファイルを作成します。次に、hook_mail()内の変更関数がこのコードを使用します。

function get_price_mail($key, &$message, $params) {
  switch ($key) {
    case 'mail_to_eberhard':
      $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes';
      //$message['from'] = \Drupal::config('system.site')->get('mail');
      $message['subject'] = t('Factory Purchase - ').\Drupal::config('system.site')->get('name');;
      //$message['subject'] = t('Article created: @title', array('@title' => $params['node_title']), $options);
      // Render the template to HTML
      // Set up email template
      $body_data = array (
         '#theme' => 'mail_to_eberhard',
         '#submitted_data' => $params['message']
      );
      //$message['body']['#theme'] = 'mail_to_eberhard';
      $message['body'][] = \Drupal::service('renderer')->render($body_data);
      break;
  }
} 

テンプレートファイル内で、次のように配列変数を使用できます

You have received one new message from the Get Price Tab.<br/><br/>
<b>Full Name</b> : {{ submitted_data['user_full_name'] }}<br/>
<b>Email</b> : {{ submitted_data['user_email'] }}<br/>
<b>Phone</b> : {{ submitted_data['user_number'] }}<br/>
<b>State</b> : {{ submitted_data['user_state'] }}<br/>
<b>Product SKU</b> : {{ submitted_data['product_sku'] }}<br/>
<b>Product URL</b> : <a href='{{ submitted_data['product_url'] }}'>{{ submitted_data['product_url'] }}</a>
<br/><b>Message</b> : {{ submitted_data['user_message'] }`
1
Mohsin Khan