मैं एक Drupal व्यवस्थापक सेटिंग फ़ॉर्म पर सबमिट कॉलबैक का उपयोग कैसे करूं?


14

मैं इस कोड का उपयोग अपने व्यवस्थापक फ़ॉर्म को बनाने के लिए कर रहा हूँ:

function custom_orders_admin(){
  $form = array();

  $form['custom_ignore_terms']['ignore_terms'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Don\'t display these'),
    '#default_value' => variable_get('custom_ignore_terms', array()),
    '#options' => drupal_map_assoc($termTypes),
    '#description' => t("Choose the terms you do not want displayed."),
    '#required' => FALSE,
  );

  return system_settings_form($form);
}

लेकिन मुझे लगता है कि अगर मैं ऐसा करता हूं:

function custom_orders_admin_submit($form, &$form_state) {
  exit(var_dump($form_state));
}

मैं बाहर नहीं जा सकता। मैं यह अनुमान लगा रहा हूँ क्योंकि system_settings_form()प्रस्तुत करने का ध्यान रखता है। मैं अपना नियंत्रण कैसे वापस पा सकता हूं? मुझे उस _सुमित हैंडलर में कुछ कस्टम प्रोसेसिंग करने की आवश्यकता है ...


मैंने एक '#submit'संपत्ति जोड़ने की कोशिश की, $formलेकिन इससे भी मदद नहीं मिली।
आदित्य एमपी

3
उह, क्षमा करें कि वास्तव में काम किया! मैंने किया $form['#submit'] = array('custom_food_orders_admin_submit');और अब यह काम कर रहा है। धन्यवाद!
आदित्य एमपी

जवाबों:


30

$form_id . '_submit'यदि कोई अन्य सबमिट हैंडलर सेट नहीं किया गया है, तो डिफ़ॉल्ट रूप से केवल आग का हैंडलर जमा करें।

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

आप ऐसा कर सकते हैं:

/**
 * A custom form.
 */
function custom_form() {
  $form = array();

  $form['custom_form_field'] = array(
    '#type' => 'textfield',
    '#title' => t('Custom form field'),
    '#default_value' => variable_get('custom_form_field', ''),
  );

  // Set a submit handler manually because the default submit handler
  // gets overridden by the system_settings_form() submit handler.
  $form['#submit'][] = 'custom_form_submit';

  return system_settings_form($form);
}

/**
 * Submit handler for the custom form.
 */
function custom_form_submit($form, &$form_state) {
  // Submit code here.
}

अपने सबमिट हैंडलर को इस तरह से जोड़ना मतलब आप के पहले चलेंगे system_settings_form () सबमिट हैंडलर।

यदि आप चाहते हैं कि आप के बजाय के बाद चलाने के लिए:

// Set a submit handler manually because the default submit handler
// gets overridden by the system_settings_form() submit handler.
$form['#submit'][] = 'custom_form_submit';

return system_settings_form($form);

कर:

$form = system_settings_form($form);
$form['#submit'][] = 'custom_form_submit';
return $form;

सुनिश्चित करें कि यह नहीं करना है, हालांकि:

$form = system_settings_form($form);
$form['#submit'] = array('custom_form_submit');
return $form;

क्योंकि यह system_sttings_form () को हैंडलर सबमिट करेगा, जो पहली बार में system_settings_form () फ़ंक्शन का उपयोग करने के उद्देश्य को पराजित करेगा।

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