it-swarm-id.com

Bagaimana cara menambahkan penangan kirim tambahan dalam formulir checkout perdagangan?

Bagaimana cara menambahkan penangan kirim tambahan? Saya sudah mencoba ini tetapi tidak berhasil.

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

Apa yang Anda lakukan itu benar.

Masalahnya adalah bahwa Drupal Commerce telah mendefinisikan tindakan kirim pada tombol yang diklik, yang akan digunakan sebagai pengganti dari penangan yang ditentukan pada formulir itu sendiri. Jadi Anda perlu menambahkan penangan pengiriman Anda. ke tombol (Batalkan, Lanjutkan) yang Anda ingin gunakan fungsi kirim Anda.

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

Untuk dengan cepat menjawab pertanyaan halus Ahmad - bagaimana cara menambahkan fungsi kirim kustomnya SEBELUM fungsi kirim lainnya:

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

Gunakan kode berikut untuk menambahkan pengajuan ajukan ekstra ke formulir. Ini bekerja untuk saya:

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