Изменение значения % электронной почты веб-формы перед отправкой электронной почты
Я призываю вашу мудрость в этот день, потому что я не могу понять, как изменить отправленные значения веб-формы, которые используются в шаблонах электронной почты.
Вот моя ситуация:
У меня есть форма "свяжитесь с нами" (установленная с помощью 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, но я хотел, чтобы это было предельно ясно. Я надеюсь, что вы все равно поможете :-(
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'])
, чтобы убедиться, что вы используете правильные ключи массива и т.д.