#states का उपयोग hook_form_alter में
नमस्ते। मैं Drupal 7 में फ़ील्ड निर्भरताओं को लागू करने के बारे में एक समस्या हल करने की कोशिश कर रहा हूँ। कई सवालों से यह स्पष्ट हो गया है कि 7वें Drupal में #states का उपयोग करना conditional fields के बजाय अधिक अनुकूल है। ऐसा लगता है कि इस मॉड्यूल में एक और समस्या multi_step मॉड्यूल के उपयोग के दौरान निर्भरता है।
कुल मिलाकर, मैंने समझ लिया है कि #states कैसे काम करता है। लेकिन मैंने केवल अपनी फॉर्म hook_form बनाने के समय इसे कैसे काम करता है, यह समझा है। लेकिन मेरा कार्य पहले से तैयार सामग्री जोड़ने के फॉर्म को फिर से बनाना है।
hook_form_ID_FORM_alter
मैं इसका उपयोग कर रहा हूँ। dsm($form); के माध्यम से ऐरे खोजता हूँ;
लेकिन मैं सही तरीके से निर्भरताएँ कैसे लिखनी हैं, यह नहीं समझ पा रहा हूँ।
मान लीजिए, मैंने बनाई गई फॉर्म में इसे इस तरह किया:
<?php $form['radio_type'] = array(
'#type' => 'radios',
'#options' => array(
'0' => t('पॉपअप समूह प्रकट होता है'),
'1' => t('फील्ड टेक्स्ट सक्रिय नहीं है'),
'2' => t('चेकबॉक्स गायब हो जाते हैं'),
),
'#title' => t('क्रिया चुनें')
);
$form['grupa'] = array(
'#type' => 'fieldset',
'#title' => t('समूह'),
'#states' => array(
'visible' => array(
':input[name="radio_type"]' => array('value' => '0'),
),
),
);?>
hook_from_alter फ़ंक्शन में (अभी के लिए template में लिख रहा हूँ)
मैं कुछ ऐसा करने की कोशिश कर रहा हूँ:
<?phpfunction theme_form_zavedeniya_node_form_alter(&$form, &$form_state, $form_id) {
dpm($form);
$form['body']['und']['0']['value']['#states'] = array(
'invisible' => array(
':input[name="field_sity2"]' => array('value' => array('56'),),
),
);
}?>
यानी, मैं ऐसा कर रहा हूँ कि जब field_sity2 (टर्म पर लिंक) में 56वां मान चुना जाता है, तो body फ़ील्ड गायब हो जाए।
संक्षेप में, कुछ भी काम नहीं कर रहा है। मैंने विभिन्न तरीकों से प्रयास किया, लेकिन ऐसा लगता है कि कभी भी सही नहीं हुआ। कृपया सलाह दें।
P.S. क्या आप यह भी सुझाव दे सकते हैं कि सामग्री बनाने के लिए बहु-चरणीय फॉर्म बनाने के लिए क्या उपयोग करें, जिसमें निर्भर फ़ील्ड हों। और आगे चलकर, सामग्री को संपादित करने के लिए, इसे चरणों के बजाय टैब के माध्यम से संपादित किया जा सके।