इसे पूरा करने के लिए आप अजाक्स का उपयोग कर सकते हैं। Drupal 7 को अब अजाक्स का अच्छा समर्थन प्राप्त है। अपनी पहली चयन सूची (शहर) पर आपको अजाक्स जानकारी जोड़ने की आवश्यकता होगी। फिर, पहले में दी गई जानकारी के आधार पर दूसरी चयन सूची को आबाद किया जा सकता है। आप दूसरी चयनित सूची को तब तक छिपा भी सकते हैं जब तक कि पहले में एक विकल्प नहीं चुना जाता है, और मैं समझाता हूं कि इसे थोड़ा कैसे करें। सबसे पहले, मूल रूप सेट करने के लिए:
$form['city'] = array(
'#type' => 'select',
'#title' => t('City'),
'#options' => $options,
'#ajax' => array(
'event' => 'change',
'wrapper' => 'squadron-wrapper',
'callback' => 'mymodule_ajax_callback',
'method' => 'replace',
),
);
$form['squadron_wrapper'] = array('#prefix' => '<div class="squadron-wrapper">', '#suffix' => '</div>');
$form['squadron_wrapper']['squadron'] = array(
'#type' => 'select',
'#title' => t('Squadron'),
'#options' => $squadron_options,
);
यह तत्वों का सिर्फ मूल सेटअप है। अब आपको यह निर्धारित करने के लिए एक तरीके की आवश्यकता होगी कि स्क्वाड्रन में क्या विकल्प होने चाहिए। सबसे पहले आपको call शहर ’की चयन सूची में अपने अजाक्स कॉलबैक की पहचान करने की आवश्यकता है। ज्यादातर मामलों में आप बस उस तत्व को वापस कर सकते हैं जो अजाक्स तत्व को लपेटता है, इस मामले में $ फॉर्म।
function mymodule_ajax_callback($form, $form_state) {
return $form;
}
अब, जब 'शहर' चयन सूची में परिवर्तन होता है, तो यह फॉर्म के स्क्वाड्रन-रैपर भाग का पुनर्निर्माण करेगा। आपका 'शहर' मूल्य अब $ form_state ['मान'] में होगा। इसलिए, जब फॉर्म का पुनर्निर्माण किया जाता है, तो हमें यह निर्धारित करने की आवश्यकता होती है कि 'शहर' के मूल्य के आधार पर चयन सूची में क्या विकल्प दिए जाएं।
// Get the value of the 'city' field.
$city = isset($form_state['values']['city']) ? $form_state['values']['city'] : 'default';
switch ($city) {
case 'default':
// Set default options.
break;
case 'losangeles':
// Set up $squadron_options for los angeles.
break;
}
// If you want to hide the squadron select list until a city is
// selected then you can do another conditional.
if ($city !== 'default') {
$form['squadron_wrapper']['squadron'] = array(
'#type' => 'select',
'#title' => t('Squadron'),
'#options' => $squadron_options,
);
}