Você pode usar o Ajax para fazer isso. O Drupal 7 agora tem um bom suporte ao Ajax. Na sua primeira lista de seleção (cidade), você precisará adicionar informações do Ajax. Em seguida, a segunda lista de seleção pode ser preenchida com base nas informações da primeira. Você também pode ocultar a segunda lista de seleção até que uma opção na primeira seja selecionada, e eu explicarei como fazer isso daqui a pouco. Primeiro, para configurar o formulário básico:
$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,
);
Esta é apenas a configuração básica dos elementos. Agora você precisará de uma maneira de determinar quais opções devem estar no esquadrão. Primeiro, você precisa identificar seu retorno de chamada do Ajax na lista de seleção 'cidade'. Na maioria dos casos, você pode simplesmente retornar o elemento que envolve o elemento ajax, neste caso $ form.
function mymodule_ajax_callback($form, $form_state) {
return $form;
}
Agora, quando a lista de seleção 'cidade' mudar, ela reconstruirá a parte do esquadrão-invólucro. O valor da sua 'cidade' agora estará em $ form_state ['values']. Portanto, quando o formulário é reconstruído, precisamos determinar quais opções dar à lista de seleção com base no valor de 'cidade'.
// 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,
);
}