जवाबों:
unset()
रूपों का उपयोग करना एक अच्छा समाधान नहीं है (जैसा कि मुझे लगता है कि आप जानते हैं), जैसा कि आप कभी नहीं जानते कि क्या सबमिट करें / मान्य हैंडलर प्रक्रिया शुरू होने पर असंगत तत्व की मौजूदगी की उम्मीद कर सकते हैं। इससे अवांछित त्रुटियां हो सकती हैं।
तीन तरीके हैं जो आप सुरक्षित रूप से एक फार्म तत्व को 'छिपाने' के लिए उपयोग कर सकते हैं
'#type' => 'value'
तत्व पर उपयोग करें , जिसका प्रभाव होगा कि तत्व के लिए मूल्य अभी भी #value
सामान्य के साथ प्रस्तुत / मान्य कार्यों के माध्यम से पारित किया जाएगा । यह मेरी पसंदीदा विधि है।'#access' => FALSE
निरूपित करने के लिए यह स्क्रीन करने के लिए outputted नहीं किया जाना चाहिए तत्व पर।'#type' => 'hidden'
बार्ट के रूप में सुझाव दिया है (हालांकि यह के उपयोग के आपके उपयोग के मामले पर निर्भर करता है, मैं अगर तुम तुम क्या एक फ़ॉर्म एलीमेंट का मान को छिपाने के लिए नहीं एक छिपा इनपुट के रूप में रूप में यह उत्पादन करना चाहते हैं की कोशिश कर रहे कल्पना)।hide()
उपयोग फार्म तत्वों पर नहीं किया जाना चाहिए, यह आसानी से पूरे फॉर्म जमा करने की प्रक्रिया को गड़बड़ कर सकता है क्योंकि सत्यापनकर्ता अभी भी तत्व के लिए चलाए जा रहे हैं। उदाहरण के लिए, यदि आप hide($form['title']);
एक नोड फॉर्म पर हैं , तो आप कभी भी फॉर्म सबमिट नहीं कर पाएंगे, क्योंकि शीर्षक फ़ील्ड की आवश्यकता है, लेकिन एक मूल्य प्रदान नहीं किया जाएगा। 3 तरीकों से ऊपर सबसे अच्छा लोगों को उपयोग करने के लिए, इसी क्रम में :) हैं
drupal_render($form['base']['prices']['sell_price'])
काम क्यों नहीं कर रहा है?
drupal_render()
, तो आपको कोई भी फॉर्म टैग / टोकन / आदि नहीं मिलेगा। जब तक आप उत्पादन पूरी $form
सरणी
यदि आप टेम्प्लेट फ़ाइल का उपयोग कर रहे हैं तो आप छिपाकर () का उपयोग करके सामान छिपा सकते हैं ।
यदि आप किसी प्रपत्र तत्व को छिपाना चाहते हैं hook_form_alter
, unset()
तो आपका सबसे अच्छा विकल्प हो सकता है।
यदि यह केवल एक मूल्य संग्रहीत करने के लिए है तो आप '# टाइप' => 'छिपा' का उपयोग कर सकते हैं ।
drupal_render($form['base']['prices']['sell_price'])
प्रपत्र प्रदर्शित करेगा, लेकिन इसकी बचत नहीं!