web-dev-qa-db-ja.com

hook_mail_alter(&$ message)のパラメーターフィールドにアクセスするにはどうすればよいですか?

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;で値にアクセスすると、何も表示されません。

2
amol

メッセージエンティティは_$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();
  }
}
_
4
maijs