Передача переменных в почте drupal
У меня есть пользовательский модуль с формой, и я хочу передать значения из 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['имя'].
Как я могу передать значения из полей формы?
5
Author: kiamlaluno, 2014-02-18
1 answers
Вы уже передаете $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']));
6
Author: Clive, 2014-02-18 21:47:50