drupal 8でhook_mail_alterを使用して、連絡フォームから送信される電子メールメッセージを変更しています。hook_mail_alter()
の_$message['params']
_フィールドにアクセスするにはどうすればよいですか?
print_r(array_keys($message['params']));
で次の値を取得しています。
_Array (
[0] => contact_message
[1] => sender
[2] => contact_form
)
_
お問い合わせフォームのフィールドへのアクセス方法を誰かが提案できますか?
print_r($message['params']['contact_form']);die;
で値にアクセスすると、何も表示されません。
メッセージエンティティは_$message['params']['contact_message']
_に格納され、連絡先フォームのすべての値が含まれます。これがタイプ_contact_message
_のエンティティであることを前提として、get()
メソッドを操作して、連絡先メッセージに含まれる可能性のあるフィールドの値を取得できます。例:
_/**
* Implements hook_mail_alter().
*/
function mymodule_mail_alter(&$message) {
if (isset($message['id']) && $message['id'] == 'contact_page_mail') {
/** @var \Drupal\contact\Entity\Message $contact_message */
$contact_message = $message['params']['contact_message'];
// Get sender's name.
$sender_name = $contact_message->getSenderName();
// Get sender's mail.
$sender_mail = $contact_message->getSenderMail();
// Get subject.
$subject = $contact_message->getSubject();
// Get message.
$message_body = $contact_message->getMessage();
// Get the value of "field_request" field.
$request_value = $contact_message->get('field_request')->getValue();
}
}
_