मैं कॉमर्स चेकआउट फॉर्म में अतिरिक्त सबमिट हैंडलर कैसे जोड़ सकता हूं?


14

मैं अतिरिक्त सबमिट हैंडलर कैसे जोड़ूं? मैंने यह कोशिश की है, लेकिन यह काम नहीं किया।

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');
}

जवाबों:


14

आप जो कर रहे हैं वह सही है।

समस्या यह है कि ड्रुपल कॉमर्स ने सबमिट किए गए बटनों पर सबमिट एक्शन को परिभाषित किया है, जिसका उपयोग फॉर्म पर परिभाषित सबमिट हैंडलर के बजाय किया जाएगा। इसलिए आपको अपने सबमिट हैंडलर को बटन (रद्द करना, जारी रखना) जोड़ना होगा जिसे आप अपने सबमिट फ़ंक्शन का उपयोग करना चाहते हैं।

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

तो मैं कंटिन्यू बटन पर सबमिट हैंडलर को कैसे जोड़ सकता हूं?
अहमद

1
मेरा मानना ​​है कि $form['buttons']['continue']['#submit'][] = ..आप प्रपत्र चर का निरीक्षण कर सकते हैं और पता लगा सकते हैं।
googletorp

लेकिन मैं चाहता हूं कि मेरे सबमिट फ़ंक्शन को अपने सबमिट फ़ंक्शन की तुलना में पहले निष्पादित करना चाहिए? मैं ये कैसे करूं?
अहमद

यह एक नया प्रश्न है। टिप्पणियाँ सवाल पूछने / जवाब देने के लिए नहीं होती हैं।
googletorp

6

अहमद के परिष्कृत प्रश्न का तुरंत जवाब देने के लिए - अपने कस्टम सबमिट फ़ंक्शन को जोड़ने के लिए अन्य जमा कार्यों से पहले कैसे:

if ( empty($form['buttons']['continue']['#submit']) ) {
    $form['buttons']['continue']['#submit'] = array(); // just in case
}
array_unshift($form['buttons']['continue']['#submit'],'c_coupon_review_submit');

संदर्भ के लिए, परिष्कृत प्रश्न googletorp से उत्तर की टिप्पणियों में है।
रॉकी

1

एक फॉर्म में अतिरिक्त सबमिट हैंडलर जोड़ने के लिए निम्न कोड का उपयोग करें। इसने मेरे लिए काम किया:

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...
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.