it-swarm.asia

كيف أضيف معالج إرسال إضافي في نموذج سداد رسوم التجارة؟

كيف أضيف معالج إرسال إضافي؟ لقد جربت هذا ولكنه لم ينجح.

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

ما تفعله صحيح.

تكمن المشكلة في أن Drupal حددت التجارة إجراء الإرسال على الأزرار التي يتم النقر عليها ، والتي سيتم استخدامها بدلاً من معالجات الإرسال المحددة في النموذج نفسه. لذلك تحتاج إلى إضافة معالجات الإرسال الخاصة بك إلى الأزرار (إلغاء ، متابعة) التي تريد استخدام وظيفة الإرسال الخاصة بك.

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

للإجابة بسرعة على سؤال أحمد المكرر - كيفية إضافة وظيفة الإرسال المخصصة له قبل وظائف الإرسال الأخرى:

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

استخدم الكود التالي لإضافة معالج إرسال إضافي إلى نموذج. عملت معي:

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