Como carregar Dropdown diânico no Update

Desculpa sou novo utilizando esse framework, estou tentando fazer algo bem simples de escolher o estado e aparecer a cidade no combo box. Copiei o codigo dessa pagina: http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown.

Porem o combo box não atualiza, gostaria de alguma ajuda, eu apenas alterei uma linha.

$data=Cidade::model()->findAll(“id_est=‘1’”);

$data=CHtml::listData($data,‘id’,‘cidade’);

Na pagina my, eu quando entra nela eu percebi que os options estão sendo criados.

Mateus,

Posta seu dropDownList() e o Controller que é usado para gerar os dados.

Cara, eu acabei optando por usar JQuery puro, sem utilizar o yii.

Ai apareceu outro problema, acabou ficando certinho meu código e funcionando.

Porem percebi que esta ocorrendo algum problema no jquery, tenho um Jquery aberto no Main.php.


<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/plugins/jquery-1.7.min.js"></script> 

não sei por qual razão o layout esta funcionando, mais os outros códigos jquery não. Observação: Testei com outro jquery aberto, o layout para de funcionar e meu código funciona

Mateus,

Provavelmente esta rodando 2 jquery com versões diferentes. Quando esta usando qualquer componente do Yii, automaticamente ele carrega o jquery nativo no framework.

Mais usa a opção da wiki que vai da certo.

Amigos o que fiz de errado que o meu dropDownList não carrega. Seguindo a sugestão do Newerton fiz assim:

_model




class setorsub extends CActiveRecord {


    public static function listSubSetores($idsetor) {

        $setores = array();


        $models = self::model()->findAll('setor=:setor ORDER BY nome ASC', array(':setor' => $idsetor));

        foreach ($models as $model) {

            $setores[$model->idsetorsub] = $withName ? $model->nome : $model->nome;

        }

        return $setores;

    }

}



_Controller





    public function actionSubsetor() {

        $subs = setorsub::model()->findAll('setor = :setor', array(':parent' => $_POST['idsetores']));

        $subs = CHtml::listData($subs, 'idsetorsub', 'nome');


        echo CHtml::tag('option', array('value' => ''), CHtml::encode('Selecione'), true);

        foreach ($subs as $value => $name) {

            echo CHtml::tag('option', array('value' => $value), $name, true);

        }

    }



_form





                                <div class="control-group">                                    

                                    <div class="controls">

                                        <?php echo $form->labelEx($model, 'destino'); ?>

                                        <?php

                                        echo $form->dropDownList($model, 'destino', setores::listSetores(), array('class' => 'span12', 'empty' => ' ', 'title' => 'Selecione o Setor',

                                            'ajax' => array(

                                                'type' => 'POST', //request type

                                                //'dataType' => 'json',

                                                'url' => Yii::app()->createUrl('setorsub/subsetor'),

                                                'success' => 'function(data){$("select#ocorrencias_setorsub").html(data);}',

                                                'data' => array('destino' => 'js:$(this).val()')

                                        )));

                                        ?>

                                        <?php echo $form->error($model, 'destino'); ?>

                                    </div>

                                </div>

                                <div class="control-group">                                    

                                    <div class="controls">

                                        <?php echo $form->labelEx($model, 'setorsub'); ?>

                                        <?php echo $form->dropDownList($model, 'setorsub', CHtml::listData(setorsub::listSubSetores($model->destino), 'idsetorsub', 'nome'), array('class' => 'span12', 'empty' => ' ', 'title' => 'Selecione o Setor')); ?>

                                        <?php echo $form->error($model, 'setorsub'); ?>

                                    </div>

                                </div>  



Como isso todos os setores são mostrados, porém os SubSetores nada aparecem. Como posso resolver isto??

Amigos estou utilizando o bootstrap, quando escolho um setor, nada acontece, a aplicação não informa nenhum erro. Simplesmente fica parada e não muda nada. Alguem tem alguma idéia.

Amigos,

Consegui autalizar a combo de subSetor, mais quando envio o campo vai nulo. Segue abaixo:

_VIEW





<?php

 echo $form->dropDownList($model, 'destino', setores::listSetores(), array('class' => 'span12', 'empty' => ' ', 'title' => 'Selecione o Setor',

'ajax' => array(

'type' => 'POST', //request type                                                

'url' => CController::createUrl('ocorrencias/subsetor'),

'update' => '#setorsub',

'data' => array('destino' => 'js:this.value'),

)));

echo CHtml::dropDownList('setorsub', '', array(), array('class' => 'span12', 'prompt' => ''));

?>



_CONTROLLER





    public function actionSubsetor() {

        $data = setorsub::model()->findAll('setor=:parent_id ORDER BY nome ASC', array(':parent_id' => (int) $_POST['destino']));


        $data = CHtml::listData($data, 'idsetorsub', 'nome');

        foreach ($data as $value => $name) {

            echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);            

        }

    }



Como falei a combo carrega perfeitamente, porém quando adiciono ao BD o campo [size=2]setorsub [/size][size=2]vai null. Alguém pode por favor me ajudar…[/size]

Quando você envia para ‘ocorrencias/subsetor’ vai nulo?

Muda de:


'data' => array('destino' => 'js:this.value'),

Para:


'data' => array('destino' => 'js:$(this).val()'),

E também verifica se o ID do outro select é #setorsub.

Valeu Newerton, resolvido!!!!!!

Amigos tenho uma combo de Marca e monto dinamicamente a combo de Modelo, no Insert tudo roda perfeito. O problema é que quando acesso o Update a combo de Modelo fica vazia, ou seja, tenho novamente que escolher a Marca. Como fazer para quando acessar ao Updade todas as informações venham preenchidas como é pra ser?????????