CRUD de duas Tabelas

da uma olhada na referencia do metodo do dropDownList que la explica melhor como setar propriedades para um option especifico

Estou com o mesmo problema na tela de UPDATE!

tem diferença entre o $form->dropDownList(), e o CHtml::dropDownlist() ????

quando eu deixo em $form… ele aparece no update! só que não consigo usar o ajax ele não muda os resultados da outra dropdown, e quando uso CHtml ele não aparece setado em UPdate mais faz a gravação! tem algum ajax que de pra usar no $form?

$form usa o CHtml::activeDropDownList, que difere do dropDownList pois usa o model pra criar os campos, validar etc, eqto o dropDownList, nao active, apenas gera um select do html

de qualquer forma, da pra usar JS normal mesmo


$htmlOptions=array('onchange'=>'$("myDiv").load("mypage");');

Provavelmente o nome em CHtml::dropDownlist não está no formato esperado. Tente usar assim:




 $model = new Model();

  echo CHtml::dropDownList(CHtml::activeName($model, 'attribute'), ....);



Desta forma ficou igual eu usando $form->dropDownList();

os ajax não funcionou :(.

Estranho. Verifica se da algum erro de JS com o DragonFly(Opera) ou o Firebug(FF). Posta tb o seu arquivo da view pra a gente poder dar uma olhada.

Bom no FireBug não sei mexer nele muito bem!

eu olhei na guia redes, que aparentemente é onde aparece os erros da página!

mais não apareceu nenhum erro!

minha view está assim:


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

        <?php

            $secao = Secao::model()->with(array('conteudo'))->findAll();

            $list = CHtml::listData($secao, 'idsecao','titulo');

            echo CHtml::dropDownList(CHtml::activeName($model,'secao'),'',$list,array('empty'=>'Selecione uma Seção',

                'ajax'=>array(

                'type'=>'POST',

                'url'=>CController::createUrl('conteudo/getcategoria'),

                'update'=>'#categoria',

                )

            ));

        ?>

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


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

		<?php echo CHtml::dropDownList(CHtml::activeName($model,'categoria'),'',array(),array('empty'=>'Selecione uma categoria')); ?>

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



Mude o dropDown de categorias para o código abaixo e veja se funciona:




<?php echo CHtml::dropDownList(CHtml::activeName($model,'categoria'),'',array(),array('empty'=>'Selecione uma categoria', 'id'=>'categoria')); ?>



continuo do mesmo jeito! =\

Eu to sem idéias do que pode ser, eu acho que é bom vc dar uma futucada no DragonFly ou no Firebug pra ver como eles funcionam e ver se eles te mostram algum erro. O único erro que eu ví foi o que falei acima, que no dropDown da sessão vc ta mandando o Yii fazer um update em #categorias, mas este não existia, então coloquei o id no final do código que postei pra ver se era isso.

tenso! vou dar uma olhada, agora só segunda feira eawuw!

valeu mesmo assim pela ajuda, vou dar uma pesquisada oque pode ser, se eu achar a solução eu posto!

descobri que no $form->dropDownList(), o name fica assim <div name="Conteudo_name"> e com CHtml::dropDownList

fica <div name="name"> por isso não conseguia rodar o js, só que tenho um problema!

na minha função eu puxo o id assim:


public function actionGetcategoria()

     {

        $categoria= Categoria::model()->findAll('secao=:secao',array(':secao'=>(int)$_POST['secao']));

        $list = CHtml::listData($categoria, 'idcategoria','titulo');

        foreach($list as $value => $name)

        {

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

        }

     }

que no caso estava usando CHtml… ai conseguia pegar o id pelo $_POST[‘secao’],

como faço pra chamar o id de Conteudo_nome ? seria $_POST[‘Conteudo’][‘secao’] ?

eu testei mais não deu certo, teria outra forma?

Oi pessoal,

Espero já terem resolvido mais… Eu faço da seguinte forma.

Para o estado:




$estados = Estados::model()->findAll(array('order'=>'nome'));

$listaEstados = CHtml::listData($estados, 'id', 'nome');

echo $form->dropDownList($model,'estado_id', $listaEstados, 

  array(

	'style'=>'width:300px;', 

	'empty'=>'Selecione um Estado',

	'ajax' => array(

	'type'=>'POST', 

	'url'=>Yii::app()->createUrl('funcionarios/MunicipiosDinamico'), 

	'replace'=>'#Funcionarios_municipio_id',

  ),						

));



Para o Municipio:




if ($model->isNewRecord)

	echo $form->dropDownList($model,'municipio_id', array(), array('style'=>'width:300px;')); 

else {

	echo $form->dropDownList($model,'municipio_id', $model->getMunicipiosOptions(), array('style'=>'width:300px;'));

}



E crio no model a getMunicipiosOptions():




public function getMunicipiosOptions()

{

	$model_municipios=Municipios::model()->findAll(array('condition'=>'estado_id='.$this->estado_id,'order'=>'nome'));

	$municipiosArray = CHtml::listData($model_municipios, 'id', 'nome');

	return $municipiosArray;

}



Funciona que é uma beleza. Até mais

Pode usar o CHtml, mas ai no nome do item você coloca NomeDoModel[idcategoria]

Olá! alguem sabe se da para resolver esse tipo de situação com a solução acima? Não estou conseguindo fazê-la funcionar. Alguem pode me ajudar ?