Как добавить дополнительный обработчик отправки в форму оформления заказа в коммерции?
Как добавить дополнительный обработчик отправки? Я пробовал это, но это не сработало.
function c_coupon_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
switch($form_id) {
case 'commerce_checkout_form_review':
drupal_set_message($form_id . '_form submit');
$form['#submit'][] = 'c_coupon_review_submit';
}
}
function c_coupon_review_submit($form, &$form_state) {
drupal_set_message('submitted');
}
15
3 answers
То, что вы делаете, правильно.
Проблема в том, что Drupal Commerce определила действие отправки для нажимаемых кнопок, которое будет использоваться вместо обработчиков отправки, определенных в самой форме. Поэтому вам нужно добавить обработчики отправки к кнопкам (Отмена, Продолжить), которые вы хотите использовать для отправки.
$form['buttons']['continue']['#submit'][]='c_coupon_review_submit';
15
Author: googletorp, 2014-08-27 09:28:50
Чтобы быстро ответить на уточняющий вопрос Ахмада - как добавить его пользовательскую функцию отправки ПЕРЕД другими функциями отправки:
if ( empty($form['buttons']['continue']['#submit']) ) {
$form['buttons']['continue']['#submit'] = array(); // just in case
}
array_unshift($form['buttons']['continue']['#submit'],'c_coupon_review_submit');
6
Author: Giles B, 2014-10-08 22:14:45
Используйте следующий код, чтобы добавить дополнительный обработчик отправки в форму. Это сработало для меня:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'xyz') {
$form['#submit'][] = 'webform_extra_submit_test';
}
}
function webform_extra_submit_test($form, &$form_state) {
global $user;
$user_id = $user->uid;
// do code here $form_state['values'] etc...
}
1
Author: Astha chauhan, 2014-10-08 21:45:01