हुक_फॉर्म_ल्टर () इतना गन्दा क्यों है?


40

यहाँ एक उदाहरण मैं बस में भाग गया। मैं अपने क्षेत्र के लेबल में कुछ HTML डालने की कोशिश कर रहा हूं।

$form['field_feedback']['und']['#title'] <- has the title
$form['field_feedback']['und'][0]['#title'] <- has the title
$form['field_feedback']['und'][0]['value']['#title'] <- has the title. (Works)

केवल एक ही उपयोग किए जाने के साथ तीन पॉप्युलेटेड #title विशेषताएँ क्यों हैं?


1
जहाँ यह $ फार्म सरणी उत्पन्न होती है? जैसा कि मुझे पता है कि हमारे पास हुक_फॉर्म_लटर में इस संरचना के साथ कोई $ फॉर्म नहीं है
मोहम्मद अली अकबरी

इसके लिए शुक्रिया। मैं अपने बाल खींच रहा था। सरणी संरचना हास्यास्पद है।
JM01

जवाबों:


72

आप जो देख रहे हैं, वह है कि कैसे द्रुपाल एक रूप में खेतों का प्रतिनिधित्व करता है। यह इस तरह टूट जाता है:

  • बाहरी सरणी के बच्चों के लिए $form['field_back']['und'](के 'und'लिए 'undefined'), विभिन्न भाषाओं में क्षेत्र का अनुवाद किया गया है। Drupal में, आप उपयोग करने के लिए सिफारिश कर रहे हैं LANGUAGE_NONEके लिए 'und'कोड में।
  • प्रत्येक भाषा सरणी के अंदर के बच्चे, जैसे $form['field_feedback']['und'][0], क्षेत्र के लिए विभिन्न प्रविष्टियों का प्रतिनिधित्व करते हैं। उदाहरण के लिए, अगर एक क्षेत्र असीमित प्रमुखता है, और वहाँ है कि क्षेत्र के लिए कई प्रविष्टियों रहे हैं, वे दिखाई देने लगेंगे $form['field_feedback']['und'][0], $form['field_feedback']['und'][1]आदि
  • अंत में आपके पास प्रपत्र इनपुट तत्व (ओं) हैं, क्षेत्र के मूल्यों के लिए स्वयं, उदा $form['field_feedback']['und'][0]['value']। इस स्थिति में, स्तंभ का नाम है value, नोड संदर्भ फ़ील्ड प्रकार के लिए यह होगा nid, और इसी तरह। यदि किसी फ़ील्ड में कई डेटा कॉलम जुड़े हैं, तो आप और भी बच्चों को देखेंगे। इन्हें टेक्स्ट फ़ील्ड / सेलेक्ट बॉक्स / स्पेशल विजेट द्वारा दर्शाया जाता है, और अंततः फ़ील्ड के लिए मूल्य प्रदान करेगा।

तथ्य यह है कि पदानुक्रम के दौरान विभिन्न तत्वों में शीर्षक जोड़े गए हैं, ईमानदार होना आकस्मिक है। फार्म पर उन शीर्षकों को प्रदर्शित किया जाता है या नहीं, यह रेंडर सरणी की विशेष सेटिंग्स के नीचे है जिसमें प्रत्येक #titleसमाहित है।

वास्तविक रूप विजेट पर शीर्षक बदलने के लिए, आपको केवल सरणी के बहुत नीचे स्थित फ़ॉर्म तत्व के बारे में चिंता करने की आवश्यकता है: अर्थात वास्तविक इनपुट तत्व ( $form['field_feedback']['und'][0]['value'], आदि)।

यह शायद ध्यान देने योग्य है कि किसी विशेष क्षेत्र के लिए उपयोग किया जाने वाला तत्व / विजेट काफी जटिल हो सकता है। यदि आपके पास पहले से नहीं है, तो आपको डेवेल मॉड्यूल स्थापित करना चाहिए और सरणी dpm()का निरीक्षण करने के लिए फ़ंक्शन का उपयोग करना चाहिए $form; यह आपको दिखाएगा कि आप जिस सरणी में लक्ष्य बनाने की कोशिश कर रहे हैं, वह सरणी कहां है।


3
संक्षेप में, #title को कुछ इस तरह से जोड़ना कि ड्रुपल एक फॉर्म एपीआई सरणी पर कोई प्रभाव नहीं डालता है; उस मामले में भी, यह नहीं कहा गया है कि # विचार को ध्यान में रखा जाता है, क्योंकि यह सभी रूप तत्वों Drupal के लिए कोई विशेषता नहीं है। फ़ील्ड API मामलों को जटिल करता है, क्योंकि यह प्रपत्र सरणी के लिए एक सामान्य सरणी जोड़ता है, लेकिन यह Drupal को भ्रमित नहीं करता है, जो किसी तत्व को पहचानने के लिए #type को देखता है।
kiamlaluno
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.