フォーム付きのカスタムモジュールがあり、form_stateからの値を電子メールに渡したいです。これは私のコードです。
//The form page callback
function mymodule_page($form, &$form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Enter name here'),
);
$form['surname'] = array(
'#type' => 'textfield',
'#title' => t('Enter surname here'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array('mymodule_submit'),
);
return $form;
}
function mymodule_submit($form, &$form_state) {
$name = $form_state['values']['name'];
drupal_mail('mymodule', 'mymodule_mail', 'myemail', language_default(), array($name));
dpm($form_state);
}
/**
* Implements hook_mail().
*/
function custom_test_mail($key, &$message, $params) {
switch($key) {
case 'mymodule_mail':
$message['subject'] = t('Hello');
$message['body'][] = t('This is a body text');
break;
}
}
件名と本文が記載されたメールを受信していますが、$ form ['name']の値がありません。
フォームフィールドから値を渡すにはどうすればよいですか?
既に$name
をパラメータとして使用しますが、実際には本文に挿入しないため、メールには表示されません。
次のように、名前でパラメータを簡単に参照できるように、キー配列を使用することをお勧めします。
$params = array('name' => $name);
drupal_mail('mymodule', 'mymodule_mail', 'myemail', language_default(), $params);
...
$message['body'][] = t('This is a body text');
$message['body'][] = t('Name: @name', array('@name' => $params['name']));