Anda dapat menggunakan Ajax untuk mencapai ini. Drupal 7 memiliki dukungan Ajax yang baik sekarang. Pada daftar pilih (kota) pertama Anda, Anda perlu menambahkan informasi Ajax. Kemudian, daftar pilih kedua dapat diisi berdasarkan informasi di yang pertama. Anda bahkan dapat menyembunyikan daftar pilih kedua sampai opsi di yang pertama dipilih, dan saya akan menjelaskan bagaimana melakukannya sedikit. Pertama, untuk mengatur bentuk dasar:
$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,
);
Ini hanya pengaturan dasar elemen. Sekarang Anda akan membutuhkan cara untuk menentukan opsi apa yang harus masuk dalam skuadron. Pertama, Anda perlu membuat panggilan balik Ajax Anda diidentifikasi di daftar pilih 'kota'. Dalam kebanyakan kasus, Anda bisa mengembalikan elemen yang membungkus elemen ajax, dalam hal ini $ form.
function mymodule_ajax_callback($form, $form_state) {
return $form;
}
Sekarang, ketika perubahan daftar pilih 'kota' itu akan membangun kembali bagian skuadron-pembungkus formulir. Nilai 'kota' Anda sekarang akan berada di $ form_state ['nilai']. Jadi, ketika formulir dibangun kembali kita perlu menentukan opsi apa yang akan diberikan ke daftar pilih berdasarkan nilai 'kota'.
// 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,
);
}