मुझे फॉर्म की आईडी कैसे मिल सकती है?


22

मुझे अपने फॉर्म का फॉर्म आईडी कैसे मिलेगा? मैंने अभी-अभी अपने मॉड्यूल बनाना शुरू किया है और मैं एक ठहराव पर हूं। मुझे यह कोड किसी और से मिला है और मैं इसे अनुकूलित करने का प्रयास कर रहा हूं:

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'the form id for the node form') {
    $form['#submit'][] = 'my_custom_submit_handler';
  }
}

2
संभावित डुप्लिकेट: drupal.stackexchange.com/questions/5605/…
लक्ष्मण 13

कृपया ऊपर दिए गए प्रश्न के उत्तर देखें, यह आपके प्रश्न का उत्तर भी देना चाहिए
लक्ष्मण १३

1
यहाँ सवाल बिलकुल अलग है; यह नहीं पूछ रहा है कि एक फार्म तत्व की पहचान कैसे की जाए, लेकिन वह कौन सी फॉर्म आईडी है जिसे लागू करने की जाँच की जानी चाहिए hook_form_alter()। रिपोर्ट किए गए कोड को भी देखते हुए, मैं कहूंगा कि यह सवाल अलग है।
kiamlaluno

जवाबों:


17

PHP फ़ंक्शन print_r के साथ फॉर्म चर प्रिंट करने का प्रयास करें ।

function hook_form_alter(&$form, &$form_state, $form_id) {
  print_r($form);
}

जब आप पृष्ठ पर जाते हैं तो फ़ॉर्म चालू होता है, चर (और नाम) प्रदर्शित होंगे।

जानकारी तक पहुँचने (या बल्कि देखने) का एक आसान तरीका डीवेल मॉड्यूल द्वारा प्रदान की गई dpm () फ़ंक्शन का उपयोग करना होगा । आप इसे उसी तरह से उपयोग कर सकते हैं जिस तरह से आप print_r का उपयोग करेंगे।


1
रिपोर्ट किए गए कोड को देखते हुए, $formचर की सामग्री को देखने की कोई आवश्यकता नहीं है ।
kiamlaluno

10
इसके अलावा $ form_id एक परम है जिसे आप सीधे प्रिंट कर सकते हैं !!
निकमासक

1
यदि आपके पास देवल सक्षम है, तो बसdpm($form_id);
No Sssweat

35

मॉड्यूल स्थापित किए बिना FORM ID ढूँढना

फ़ॉर्म आईडी ढूंढना बहुत आसान है, मॉड्यूल और सभी को स्थापित करने की आवश्यकता नहीं है

चरण 1: आपको इसके संपादित पृष्ठ पर जाएं (या अपने फॉर्म का निरीक्षण करें) खोलें।

चरण 2: यदि इसका नोड रूप निरीक्षण तत्व में " नोड-फॉर्म " पाता है

फॉर्म आईडी ढूंढनाजाँच करें कि आप फॉर्म एलिमेंट में हैं।

चरण 3: संलग्न छवि देखें हाइलाइट किया गया हरे रंग का पाठ फॉर्म की आईडी है

चरण 4: महत्वपूर्ण अंत में यदि आप इसे अंडरस्कोर के साथ हाइपेन को hook_form_alter()बदलने में उपयोग करना चाहते हैं

उदाहरण के लिए: yourform_id_with_content_type_name_form

बुद्धिमान की तरह आप ड्रुपल में किसी भी फॉर्म की आईडी पा सकते हैं, जिसका आपको निरीक्षण करना है-> फॉर्म एलीमेंट ढूंढें और आईडी की विशेषता खोजें और उसका उपयोग करें

आशा करता हूँ की ये काम करेगा :)


1
यह मेरे लिए तब काम नहीं आया जब मैं एक ड्रुपल 8 साइट में टिप्पणी फार्म की रक्षा करना चाहता था। मुझे drupal.org पर इस टिप्पणी में एक समाधान मिला , जहां यह कहता है: 1) एक छिपे हुए इनपुट तत्व का पता लगाएं जिसका nameगुण "form_" है। 2) इनपुट तत्व की valueविशेषता को देखें - विशेषता का मूल्य वांछित फॉर्म आईडी है। उदाहरण: कहानी नोड्स पर टिप्पणी फ़ॉर्म में "ID_ comment_comment_node_story_form" आईडी है। यदि आप चाहें तो इस नई जानकारी को अपने उत्तर में शामिल कर सकते हैं।
हर्जब्यूब

10

यदि आपका वेबफॉर्म "www.mydomain.com/node/351" पर स्थित है, तो आपकी फॉर्म आईडी "webform_client_form_351" होगी। तो, जो कुछ भी आपका nid है - वही आपकी फॉर्म आईडी है।


2
प्रश्न वेबफॉर्म मॉड्यूल के बारे में नहीं है। यह नोड एडिट फॉर्म के बारे में है।
kiamlaluno

सवाल नोड एडिट फॉर्म के बारे में है, लेकिन अगर आप किसी भी वेबफॉर्म फॉर्म आईडी को ढूंढना चाहते हैं तो यह सही है।
herci

यह उत्तर सही है, बस इसका परीक्षण किया है।
विंचेन्थरेरा

6

यदि आप जानते हैं कि वह कोड कहां है जो उस रूप को परिभाषित करता है जिसे आप बदलना चाहते हैं, तो वहां देखें। फॉर्म आईडी उस फॉर्म को परिभाषित करने वाले फ़ंक्शन का नाम है।

उदाहरण के लिए, व्यूज 875 व्यू / लाइन / admin.inc के फंक्शन व्यू_यू_एडिट_व्यू_फॉर्म को परिभाषित करता है। पदानुक्रमिक चयन दृश्य फ़िल्टर एक हूड_फॉर्म_ल्टर फ़ंक्शन में पदानुक्रमित_सेले / मॉड्यूल / hs_taxonomy_views.module की लाइन 50 पर उस फॉर्म आईडी के लिए दिखता है।


4

drupal_set_message()प्रपत्र आईडी प्रदर्शित करने के लिए फ़ंक्शन का उपयोग करें ।

function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}

4

Drupal में किसी भी फॉर्म की फॉर्म आईडी को आसानी से जानने के लिए गेट फॉर्म आईडी मॉड्यूल का उपयोग करें ।

इसके प्रोजेक्ट पृष्ठ से इसके बारे में एक उद्धरण इस प्रकार है:

किसी भी रूप में मँडराकर आप एक प्रासंगिक लिंक उपलब्ध देखेंगे। लिंक का विस्तार करके आप फॉर्म आईडी देखेंगे। लिंक पर क्लिक करें और आपको कॉपी करने योग्य फॉर्म आईडी और हुक_फॉर्म_फ़ॉर्म_आईडी_अल्टर () हुक सुझाव के साथ एक मोडल विंडो दिखाई देगी।

इस मॉड्यूल को हटा दिया गया है। इसमें सुधार किया गया, बढ़ाया गया और देवल फॉर्म डिबग के रूप में रिब्रांड किया गया ; इसके बजाय इसका उपयोग करें।

प्रकटीकरण: मैं इन मॉड्यूल का अनुरक्षक हूं।


3

जैसा कि आपने बताया कोड नोड फॉर्म की आईडी की तलाश कर रहा है, दो मामले हैं।

द्रुपाल ६

यदि कोड किसी सामग्री प्रकार के लिए सेटिंग सेट करने के लिए उपयोग किए जाने वाले फ़ॉर्म को बदलने की कोशिश कर रहा है, तो उसे निम्नलिखित IF- स्टेटमेंट का उपयोग करना चाहिए।

if ($form_id == 'node_type_form' && isset($form['identity']['type'])) { /* … */ }

यदि कोड नोड एडिट फॉर्म को बदलने की कोशिश कर रहा है, तो कोड को निम्नलिखित IF- स्टेटमेंट का उपयोग करना चाहिए।

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }

ड्रुपल 7 और उच्चतर

पहले मामले में, IF-statement निम्नलिखित एक होना चाहिए:

if ($form_id == 'node_type_form') { /* … */ }

एक अलग दृष्टिकोण का उपयोग करते हुए, यह मानकर कि मायमॉडल आपके मॉड्यूल का संक्षिप्त नाम है, आप उपयोग कर सकते हैं mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id)। ड्रुपल 7 के बाद से, दूसरे मॉड्यूल द्वारा लागू किए गए फॉर्म को बदलने के लिए उपयोग किए जाने वाले सभी हुक $form_idपिछले पैरामीटर के रूप में मिलते हैं । देखें hook_form_alter () , hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter ()

दूसरे मामले में, IF-statement ड्रुपल 6 के लिए समान है।

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }

1

पहले Devel मॉड्यूल इंस्टॉल करें। फिर नीचे दिए गए कोड की तरह एक मॉड्यूल बनाएं

function hook_form_alter(&$form, &$form_state, $form_id) {
  dpm($form);
}

फिर आप एक फॉर्म के सभी विवरण देख सकते हैं, जैसे फॉर्म आईडी, फॉर्म के फ़ील्ड नाम आदि।

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