Informar o model no CHTML

Olá pessoal, estou com um problema que quando seleciono um item no DropDownlist a validação acusa que o campo não foi preenchido.

Isso ocorre quando utilizo desta forma:




  $cidade = Cidade::model()->findAllCidade();

  echo CHtml::dropDownList('idcidade','', $cidade,

    array(

          'empty' => 'Selecione a cidade',

          'ajax' => array(

          'type'=>'POST',

          'url'=>CController::createUrl('ficha/dynamicarea'),

          'update'=>'#idarea',

    )));



Notei que desta forma utilizando o CHtml::dropDownList não tem a referencia do model para dizer de qual model é o atributo.

Quando coloco desta forma abaixo, utilizando o $form->dropDownlist não ocorre o erro.




  $posicao = Posicao::model()->findAllPosicao();

  echo $form->dropDownlist($model, 'idposicao', $posicao,

    array(

          'prompt'=>'Selecione',

          )

    );



Preciso montar este campo utilizando o CHtml porque fiz o dropDown em cascata.

Tem como referenciar no dropDownList do CHtml de qual model é o campo que estou inserindo? Tenho quase certeza que o erro é por não referenciar o model do campo.

o problema é exatamente o que você falou

sim


echo CHtml::dropDownList('MinhaModel[idcidade]','', $cidade,



valeu Gustavo, a validação passou, mas agora gerou outro problema, não funciona o dropDownDinamico que era seguido por este:

View:




<?php $cidade = Cidade::model()->findAllCidade();

                     echo CHtml::dropDownList('Ficha[idcidade]','', $cidade,

                        array(

                        'empty' => 'Selecione a cidade',

                        'ajax' => array(

                        'type'=>'POST',

                        'url'=>CController::createUrl('ficha/dynamicarea'),

                        'update'=>'#idarea', //Acredito que o problema esteja aqui neste id, mas só que já tentei colocar ele com #MeuModel_idarea, #MeuModel[idarea], e não funcionou também.

                    )));

                ?>


<?php echo CHtml::dropDownList('Ficha[idarea]','', array(), array('empty' => 'Selecione a area',)); ?>



Controller:




public function actionDynamicarea()

	{

                $idcidade = $_POST['idcidade']; //Tentei mudar o nome deste atributo que vem do post também mas não funcionou.

		$data=Area::model()->findPorCidade($idcidade);//Metodo que busca as cidades que tem o id igual ao parametro.

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

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

		{

                    echo CHtml::tag('option',

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

		}

	}



Agora eu nem faço ideia mais de porque não esta funcionando o DropDown em cascata sendo que antes funcionava. Mas o problema de antes esta resolvido.

opa

seguinte

o post que ele recebe vem em array seguido pela model

entao pra pegar seria assim:




                $idcidade = $_POST['MinhaModel']['idcidade']; 



e sete manualmente um ID para o dropDown




<?php echo CHtml::dropDownList('Ficha[idarea]','', array(), array('empty' => 'Selecione a area','id'=>'#idarea')); ?>

Please post in english when you post in the general section… so that all users can understand it…

To post in your mother language post in appropriate international section…

Sorry, didn’t notice it wasn’t under “Portuguese”

could you please move ?

thanks Mdomba

Note: Moved as requested

Valeu pelas respostas, consegui resolver meu problema, foi mal por postar o topico no lugar errado.