Olá pessoal, estou com mais uma dúvida, como faço para atualizar 3 dropDownList dinâmicamente, um dependendo de outro tipo PAIS/ESTADO/CIDADES, isto é, um dropDownList pega os países de uma tabela do BD, e de acodo com o país o outro é atualizado com todos os estados e quando escolher o um estado o terceiro dropDownList seria atualizados com as cidades do estado selecionado. Alguém sabe como fazer isso ? Procurei no site mais só achei como atualizar 2 dropDownList e não 3, tentei usar a lógica usadas neles mas não está funcionando.
No segundo e no terçeiro dropDownList ta faltando um parâmetro.
ao inves de:
echo CHtml::dropDownList('municipio','',
array(
'empty' => 'Selecione uma estado',
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('estado/dynamicUnidade'), //url to call.
'update'=>'#unidade', //selector to update
)));
O correto seria:
echo CHtml::dropDownList('municipio','', array(),
array(
'empty' => 'Selecione uma estado',
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('estado/dynamicUnidade'), //url to call.
'update'=>'#unidade', //selector to update
)));
O array no final do nome, ele é o parâmetro da lista de dados, que está faltando. Mesmo os dados sendo carregados dinamicamente, é necessário passar o parâmetro.
Este problema está nos dois últimos combos. Por isso gera aquele html e não faz a requisição ao servidor, pq ele está considerando os parâmetros de requisição como dados.
Bom, de quaquer forma, o CHtml::dropDownList já tem alguns parâmetros pra se usar ajax.
Outros componentes html vc pode usar a função CHtml::ajax pra gerar o javascript da requisição e inserir num evento do html pelo parâmetro "htmlOptions".
Sim textbox imagina um dropdownmenu em que voce escolhe opção e dependendo da opção os textbox em baixo mudam o valor , por exemplo imagine um enquete multi-lingua em que vc tem um dropdownmenu com a respectiva linguage e dependendo da opçao os textbox apresentam os valores escritos nessa lingua.
Criaria uma nova action no meu controller, que seria responsável pela renderização via ajax da parte da enquete, que recebe um parâmetro na requisição e retorna a view na língua correta.