जब आप किसी फ़ील्ड को सेट करते हैं readonly
, तो ब्राउज़र फ़ील्ड को लॉक करता है और सबमिट करने पर सर्वर को डेटा वापस भेजता है । अन्य विशेषता यह है disabled
कि फ़ील्ड को लॉक करता है और सर्वर पर डेटा वापस नहीं भेजता है।
दोनों मामलों के लिए, आप सबमिशन के बाद समान रूप से मान सेट कर सकते हैं। तो, भले क्षेत्र के लिए सेट जब है readonly
या disabled
, और उपयोगकर्ता एचटीएमएल संशोधित करने और विभिन्न डेटा भेजा, $form_state['values']
यथावत रहेगा।
function _build_element_readonly($element, &$form_state) {
$element['value']['#attributes']['readonly'] = 'readonly';
$element['value']['#value'] = isset($element['value']['#default_value'])
? $element['value']['#default_value']
: '';
return $element;
}
ध्यान दें कि हम #value
#default_value से सेट करते हैं। #default_value डिफ़ॉल्ट मान सेट करने का सामान्य तरीका है जो फ़ॉर्म का निर्माण करते समय लोड होता है, और $form_state['values']
इसमें default_value या उपयोगकर्ता-इनपुट शामिल होगा। जब आप #value
स्पष्ट रूप से सेट करते हैं , तो उपयोगकर्ता-इनपुट को अनदेखा #value
किया जाता है और इसका उपयोग किया जाएगा।
वैसे भी, मैं '#access' => FALSE,
फार्म तत्वों को छुपाते समय उपयोग करने की सलाह दूंगा। यह तत्व को पूरी तरह से हटा देगा, जबकि आपको इसके मूल्यों का उपयोग करने की अनुमति देगा।
field_permissions
काम को गंदे तरीके से करने से आसान होगा।