Dropdownlist Dependiente ?

Bueno tengo mi combo dependiente




<div class="control-group">

		<?php echo $form->labelEx($model,'eslp_clas',array('class'=>'control-label')); ?>

	<div class="controls">

		<?php echo $form->dropDownList($model,'eslp_clas', GeTmest::toDownListClasp(),array(

                            'ajax' => array(

                            'type' => 'POST',

                            'url' => CController::createUrl('Getmests/toDownListclaspers'),

                            'update' => '#'.CHtml::activeId($model,'eslp_tipo'),

                        ),'prompt' => 'Seleccione una clase...'

                  )); ?>

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

	</div>

	</div>


	<div class="control-group">

		<?php echo $form->labelEx($model,'eslp_tipo',array('class'=>'control-label')); ?>

	<div class="controls">

		<?php echo $form->dropDownList($model,'eslp_tipo',array(),array( 'prompt' => 'Primero Seleccione una Clase..','onChange'=>'legalpersonas(this.value)')); ?>

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

	</div>

	</div>



en el modelo




	public function toDownListClasp(){

	$criteria= new CDbCriteria;

	$criteria->condition= 'mest_aplic="P"';

     $model=self::model()->findAll($criteria);

     return CHtml::listData($model,'mest_codc','mest_clas');


	}




en el controlador




public function actiontoDownListclaspers()

    {

		$id= $_POST['GeTeslp']['eslp_clas']; 

		

		 $data = GeTmest::model()->findAll('mest_codc=:id',array(':id' => $id));


		 $data = CHtml::listData($data,'mest_codt','mest_tipo');

		 

		echo CHtml::tag('option',array('value' => ''),'Seleccione un Tipo...',true);

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

            {

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


            }


    }



el combo en el create funciona de maravilla me muestra las cosas q debe mostrar …

lo que deseo saber es q en el momento de que le doy modificar o “update” al momento de mostrarme los datos que ya tengo llenos en la casilla de eslp_tipo que se supone q ya llene me la muestra vacía (eslp_tipo es el combo que depende de lo que elija en eslp_clas) podrían por favor ayudarme a ver que me falta o que error tengo por favor :D

Solucionado :D si alguien necesita saber como me avisa :D

Podrías escribir la solución para usuarios que necesiten saber más, ya q es el objetivo de un foro, preguntar y responder.

No sirve de nada un post en el que no se dé la respuesta.

;)

lo solucione agregando esto en el form




<?php 

$display="";

$tipo="";


if($model->isNewRecord)

{

$display="N";

$value=array();

}

else{


$value=CHtml::listData(GeTmest::model()->findAll("mest_codc='$model->eslv_clas'"),'mest_codt','mest_tipo');

$tipo=$model->eslv_clas;

$display="S";




	

}


?> 



y pasandole mi variable $value, en el respectivo combo q depende de otro…




	<div class="control-group" id="eslv_tipo" style="display:none">

		<?php echo $form->labelEx($model,'eslv_tipo',array('class'=>'control-label')); ?>

	<div class="controls">

		<?php echo $form->dropDownList($model,'eslv_tipo',$value,array('prompt' => 'Primero debe seleccionar una clase')); ?>

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

	</div>

	</div>



Buenas.

En mi opinión, esto :




<?php 

$display="";

$tipo="";


if($model->isNewRecord)

{

$display="N";

$value=array();

}

else{


$value=CHtml::listData(GeTmest::model()->findAll("mest_codc='$model->eslv_clas'"),'mest_codt','mest_tipo');

$tipo=$model->eslv_clas;

$display="S";




        

}


?> 



Lo deberías de escribir en tu controlador, y pasar las variables correspondientes al hacer la render de la view.

Intenta mantener el código "de operaciones" en el controlador, y el código "de visualización" en las vistas.

Un saludo.

Buenas, disculpa tengo un problema parecido y no entedi bien como se resolvio el problema.

Tengo un dropdownlist anidado en un form. donde pongo "Organo / Ente" (tblEstructura) y "Dependencias" (tblDependencia), el formulario solo necesita el di de de la dependencia. pero necesito filtrarlo desde estructura para que se vean los niveles.

Mi problema es cuando hago actualizar un registro. el cual deberia traer los datos que ya tiene. me trae todos los datos pero los dropdownlist vienen con el "promt" como value. estoy intentando hacerlo con el isNewRecord en el prompt y me funciona, pero si doy actualizar y seguidamente doy guardar. me da un error. cuando le doy a crear uno nuevo no hay problemas porque no me deja guardar. el problema viene cuando vengo a actualizar un regsitro existente. aqui mi codigo completo.

asi tengo mi form_


<!-- ************************************************************************************************ -->

<!-- ************************************************************************************************ -->

<!-- ************************************************************************************************ -->

	<div class="row">

		<?php echo $form->labelEx($model,'Organismo / Ente'); ?>

		<?php echo $form->dropDownList(TblEstructura::model(),'id',

			CHtml::listData(TblEstructura::model()->findAll(),'id','denominacion'),

			array(

					'ajax' => array(

						'type' => 'POST',

						'url' => CController::createUrl('TblDependenciapersona/Selectdependencia'),

						'update' => '#'.CHtml::activeId(TblDependenciapersona::model(),'iddependencias'),

					),'prompt' => ($model->isNewRecord ? 'Seleccione Organismo / Ente...' : null)

				)

			); ?>

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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'iddependencias',array(

			'prompt' => ($model->isNewRecord ? 'Seleccione Organismo / Ente...' : null ) //<--- aqui mi problema, necesito que traiga unicamente la denominacion de $model->iddependencia0->denominacion pero que en el value traiga el id que corresmonde a ese id, en el modelo seria $mode->iddependencia :'(


		)

		); ?>

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

	</div>


<!-- ************************************************************************************************ -->

<!-- ************************************************************************************************ -->

<!-- ************************************************************************************************ -->

la funcion que uso en el controlador


		public function actionSelectdependencia()

	{

		 $id_uno= $_POST['TblEstructura']['id']; 

	     $lista = TblDependencias::model()->findAll('idestructura = :id_uno',array(':id_uno' => $id_uno));

	     $lista = CHtml::listData($lista, 'id', 'denominacion');


	   		echo CHtml::tag('option',array('value' => ''),'Seleccione un dependencias...',true);

	            foreach($lista as $valor => $dependencias)

            {

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

            }


	}