Передача переменных в почте 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['имя'].

Как я могу передать значения из полей формы?

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