Drupal_get_form और drupal_retrieve_form के बीच अंतर क्या है?


10

बीच क्या अंतर है drupal_get_form()और drupal_retrieve_form()? क्या कोई अंतर समझा सकता है? मैं एपीआई को देखता हूं, लेकिन विवरण मेरे लिए समान है।


मुझे लगता है कि एक महत्वपूर्ण अंतर यह है कि drupal_retrieve_form()आपके कोड को अपडेट $form_stateद्वारा एक्सेस करने की अनुमति मिलती है क्योंकि यह संदर्भ द्वारा पारित किया गया है, हालांकि drupal_get_form()बस वापस लौटें $form, राज्य नहीं।
फेलिक्स ईव

जवाबों:


10

अंतर यह है कि drupal_get_form()मॉड्यूल के लिए स्वचालित रूप से प्रदान किए गए HTML फॉर्म को पुनर्प्राप्त, प्रसंस्करण और प्रदर्शित करना संभालता है, जबकि drupal_retrieve_form()एक संरचित सरणी को रिटर्न करता है।

रूप को पुनः प्राप्त करना

drupal_get_form()पहले जाँच करता है कि फॉर्म form_get_cache () के साथ फ़ॉर्म कैश में मौजूद है या नहीं ; यदि यह मौजूद नहीं है, तो यह drupal_retrieve_form () , और drupal_prepare_form () कहता है

प्रपत्र संसाधित करना

drupal_get_form()कॉल drupal_process_form () , समारोह है जो कि कॉल drupal_validate_form () , और आह्वान उस के साथ प्रस्तुत करने के संचालकों form_execute_handlers ()

रूप का प्रतिपादन

रेंडरिंग से किया जाता है drupal_process_form(), जिसे फ़ॉर्म_बिल्डर () कहते हैं

अधिकांश मामलों में, drupal_get_form()उपयोग करने के लिए फ़ंक्शन है, जैसे कि निम्न कोड में।

function node_menu() {
  $items['admin/content'] = array(
    'title' => 'Content', 
    'description' => 'Find and manage content.', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('node_admin_content'), 
    'access arguments' => array('access content overview'), 
    'weight' => -10, 
    'file' => 'node.admin.inc',
  );

  // …

  return $items;
}

एकमात्र मॉड्यूल जो मैंने पाया कि drupal_retrieve_form()सीधे कॉल कर रहा है वह मॉलॉम_मॉडरेट () में मोलोम मॉड्यूल है , जो इसे स्वचालित रूप से फ़ॉर्म सबमिट करने के लिए उपयोग करता है। कोड drupal_form_submit () का उपयोग कर सकता है , लेकिन (जैसा कि एक टिप्पणी कहती है), "प्रोग्रामेटिक फॉर्म सबमिशन प्राथमिक रूप से सबमिट बटन / एक्शन का उपयोग करने में स्वचालित रूप से सक्षम नहीं हैं, इसलिए हमें समान होना चाहिए drupal_form_submit()।"

  $form_id = $form_info['delete form'];
  $form_state = form_state_defaults();
  // We assume that all delete confirmation forms take the fully loaded
  // entity as (only) argument.
  $messages[] = "Attempt to load $form_info[entity] entity via entity_load().";
  $entities = entity_load($data->entity, array($data->id));
  $form_state['build_info']['args'][] = $entities[$data->id];
  $form = drupal_retrieve_form($form_id, $form_state);

  $form_state['values'] = array();
  $form_state['values']['mollom']['feedback'] = '';
  // Take over the primary submit button of confirm_form().
  $form_state['values']['op'] = $form['actions']['submit']['#value'];

  $form_state['input'] = $form_state['values'];
  $form_state['programmed'] = TRUE;
  // Programmed forms are always submitted.
  $form_state['submitted'] = TRUE;

  // Reset form validation.
  $form_state['must_validate'] = TRUE;
  form_clear_error();

  drupal_prepare_form($form_id, $form, $form_state);
  drupal_process_form($form_id, $form, $form_state);

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