2011-03-23 12 views
6

में फ़ील्ड को अक्षम या इसे केवल पढ़ने के लिए कैसे करें मैं कुछ फ़ील्ड को अक्षम करने और hook_page_alter() के माध्यम से उन्हें पढ़ने की कोशिश कर रहा हूं। मैं जब मैं खेतों की जोड़ी को निष्क्रिय करने की कोशिश की तो उपयोगकर्ता पेज संपादित अनुभाग द्वारा देखे जा रहे है, तो जाँच करने के लिए (फार्म संपादित)ड्रापल 7

$page['content']['system_main']['#node_edit_form'] == TRUE) 

कर रहा था, मैंने पाया कि चयन सूची के लिए इस कोड से निष्क्रिय किया जा सकता:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#attributes']['disabled'] = TRUE; 

लेकिन यह काम नहीं करता है, तो मैं निम्नलिखित कोड का उपयोग करें:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE; 

मैंने यह भी पाया है कि मैं एक पाठ क्षेत्र क्षेत्र को निष्क्रिय करने के लिए एक ही कोड का उपयोग नहीं कर सकते हैं:

$page['content']['system_main']['field_my_text_area']['und']['#attributes']['disabled'] = TRUE; 

उपरोक्त कोड टेक्स्ट क्षेत्र को अक्षम नहीं करता है, लेकिन एक ही कोड चयन सूची को अक्षम कर सकता है!

तब मैं hook_form_alter() की कोशिश की एक ही बात करने के लिए, और मैं खेतों को निष्क्रिय करने में सक्षम था और जब मैं से $ पेज सरणी प्रदान की गई सरणी की जाँच की, मैंने देखा है कि यह पता चलता है:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE; 

लेकिन जब मैंने वही कोड hook_page_alter() में सेट किया है, यह काम नहीं करता है। ऐसा लगता है कि कुछ और इसे ओवरराइड करेगा, मैंने सोचा था कि hook_page_alter() मार्कअप बदलने के लिए आखिरी जगह है।

कोई विचार ड्रूपल 7 में hook_page_alter() के अंदर किसी भी प्रकार के फ़ील्ड को अक्षम/पढ़ने के लिए सबसे अच्छा तरीका क्या है?

आप

उत्तर

13

धन्यवाद यह टेक्स्ट फ़ील्ड के लिए काम करता है^

$form['field_secured_title']['und']['0']['value']['#attributes']['disabled'] = TRUE; 
+0

उत्तर के लिए धन्यवाद। मुझे $ फॉर्म के साथ कोई समस्या नहीं है, मैं जो पूछ रहा हूं वह यह है कि इसे $ पेज सरणी द्वारा कैसे किया जाए, वे जिस तरह से ड्रूपल 7 पसंद करते हैं। मेरा मतलब है नया hook_page_alter() फ़ंक्शन का उपयोग करना। – Mehr

+3

यदि आप किसी फॉर्म से फ़ील्ड्स को बदलना चाहते हैं, तो जिस तरह से ड्रूपल इसे 'hook_form_alter' –

+0

एपीआई दस्तावेज़ गलत और गलत तरीके से करना है http://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference .html/6 # अक्षम – Sivaji

2

की तरह यह the docs

में कहा आप विशेषताओं का उपयोग कर सकते हैं:

$form['#attributes'] = array('disabled' => TRUE);