web-gelistirme-sc.com

Ticaret ödeme formuna nasıl ek bir gönderici ekleyebilirim?

Ek bir gönderme işleyicisi nasıl eklerim? Bunu denedim ama işe yaramadı.

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
Ahmad

Yaptığın doğru.

Sorun şu ki Drupal Ticaret, tıklanan düğmelerde formun kendisinde tanımlanan gönderme işleyicileri yerine kullanılacak gönderme eylemini tanımlamıştır. Bu nedenle gönderme işleyicilerinizi eklemeniz gerekir gönderme işlevinizi kullanmak istediğiniz düğmelere (İptal, Devam) basın.

$form['buttons']['continue']['#submit'][]='c_coupon_review_submit';
15
googletorp

Ahmad'in incelikli sorusuna hızlı bir şekilde cevap vermek için - diğer gönderme işlevlerinden ÖNCE özel gönderme işlevinin nasıl ekleneceği:

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
Giles B

Bir forma fazladan gönderme işleyicisi eklemek için aşağıdaki kodu kullanın. Benim için çalıştı:

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
Astha chauhan