Изменение значения % электронной почты веб-формы перед отправкой электронной почты


Я призываю вашу мудрость в этот день, потому что я не могу понять, как изменить отправленные значения веб-формы, которые используются в шаблонах электронной почты.

Вот моя ситуация:

У меня есть форма "свяжитесь с нами" (установленная с помощью API веб-формы) с полями имени, фамилии, электронной почты и сообщений. Ничего особенного. Отправленные значения отправляются администратору по электронной почте.

В этой настройке веб-формы > Тема электронной почты, я имейте этот шаблон:

[NAMEOFMYSITE | question from %value[first_name] %value[last_name]

Все работает нормально. Но моя проблема возникает, когда пользователь забывает указать в верхнем регистре в значении фамилии или имени. Это не выглядит профессионально в теме письма. И я хочу заставить эти два значения с прописной буквой в качестве первой буквы получить что-то вроде:

NAMEOFMYSITE | question from John Doe

И никогда:

NAMEOFMYSITE | question from john doe

Я попытался изменить отправленные значения , потому что я думал, что шаблон %value основан на это:

function pwe_webform_form_alter(&$form, &$form_state, $form_id) {
  [...]
  $form['#submit'][] = 'contactus_webform_submit'; // callback function on submit
}

function contactus_webform_submit($form, &$form_state) {
  $form_state['values']['submitted']['last_name'] = ucfirst($form_state['values']['submitted']['last_name']);
  $form_state['values']['submitted']['first_name'] = ucfirst($form_state['values']['submitted']['first_name']);
}

Но даже если мне удастся их изменить, %value в электронной почте не изменится.

Конечно, я dpm $form_state дерево, чтобы увидеть, где в нем отображаются отправленные значения и где шаблон %value может найти свое происхождение. Он появляется на нескольких уровнях:

  • $form_state["ввод"]["отправлено"]["фамилия"]
  • $form_state['значения']['отправлено'][2]
  • $form_state['значения']['отправленное дерево']['последнее имя']
  • $form_state['завершено форма']['отправлено']['фамилия']['#значение']
  • $form_state['веб-форма']['component_tree']['дети'][2]['значение'](но всегда пустое)

Я изменил каждую переменную , но значение электронной почты осталось прежним . Я собираюсь спросить себя, действительно ли это основано на одной из этих переменных... Если нет, то на чем это основано? И как я могу это изменить?

Пожалуйста, извините за пост looooong, но я хотел, чтобы это было предельно ясно. Я надеюсь, что вы все равно поможете :-(

Author: Djouuuuh, 2014-07-08

1 answers

В hook_form_alter добавьте новую функцию отправки перед другими обработчиками отправки, например:

pwe_webform_form_alter(&$form, &$form_state, $form_id) {
  switch($form_id) {
  case 'YOUR_WEBFORM':
       array_unshift($form['#submit'],'pwe_webform_form_submit');
       break;
  } 
}

А затем напишите свой обработчик отправки, что-то вроде этого:

function pwe_webform_form_submit($form, &$form_state){
  $form_state['input']['submitted']['last_name'] = ucfirst($form_state['input']['submitted']['last_name']);
}

Вы можете перехватить обработчик отправки с помощью вызовов dpm($form_state['values']), чтобы убедиться, что вы используете правильные ключи массива и т.д.

 3
Author: Ollie, 2014-07-08 10:02:19