テンプレートファイルを使用して、テーブルタグを使用して電子メールメッセージの本文を準備し、送信されたフォームデータをユーザー別にテーブルの行に配置します。 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でテンプレートファイルを使用する方法を教えてください。
だからここに答えがあります:あなたのモジュールのフックテーマ関数の中でこのコードを使用してください
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'] }`