Activetextfield Buscar Datos De Persona Por Cedula

Algo extraño pero pude hacer algo. cualquier comentario para simplificar mi codigo es bien recibido, estoy consciente de que esta bastante desordenado y es poco entendible, si se trata de compactar el codigo agradezco porque la verdad esta feito jejeje.

el form_




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

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

	<div class="row">

		<?php echo $form->labelEx($model,'Busque una persona');?>

		

		<?php echo CHtml::activeTextField($model,'buscarcedula',

				array('value'=> ($model->isNewRecord ? '' : $model->idpersona0->cedula),

						'id'=>'cedula','style'=>"width:10%",'onkeypress'=>'return soloNumeros(event, this)',

                'ajax'=>array(

                    'type'=>'POST',

                    'url'=>CController::createUrl('TblPersona/buscarnombrecompleto'),

                    'update'=>'#nombrediv'

                )

               ));?>

             

		<div id="nombrediv">

		<?php echo $form->textField($model,'idpersona'); ?>

		</div> 

		<!-- echo CHtml::tag('input', array('id'=>'TblDependenciapersona_idpersona','type'=>'text' , 'value' => $nombres, 'readonly'=>true)); -->

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

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



el Controller




public function actionbuscarnombrecompleto()

	{

		

		$cedula2 = $_POST['TblDependenciapersona']['buscarcedula'];

		

		if (isset($cedula2)){

			$idpersona2=Yii::app()->db->createCommand("SELECT id FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();;

			

			$nombres=Yii::app()->db->createCommand("SELECT nombre FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();

			$apellidos=Yii::app()->db->createCommand("SELECT apellido FROM tbl_persona WHERE cedula = ".$cedula2)->queryScalar();


				if ($nombres != ''){

					echo CHtml::tag('input', array('id'=>'TblDependenciapersona_idpersona','type'=>'text' , 

							'value' => $idpersona2, 'readonly'=>true, 'name'=>'TblDependenciapersona[idpersona]','style'=>'width:5%'));

					echo CHtml::tag('input', array('id'=>'TblDependenciapersona_datos','type'=>'text' ,

							'value' => $nombres.' '.$apellidos, 'readonly'=>true, 'style'=>'width:50%'));

					

				} else {

					echo CHtml::tag('input', array('id'=>'TblDependenciapersona_idpersona','type'=>'text' ,

							'value' => '', 'readonly'=>true, 'name'=>'TblDependenciapersona[idpersona]','style'=>'width:5%'));

					echo CHtml::tag('input', array('id'=>'TblDependenciapersona_datos','type'=>'text' ,

							'value' => 'Personal no registrado', 'readonly'=>true, 'style'=>'width:50%'));

				}

			

		}else{

			break;

		}

		

	}



no me meto en el código porque sin saber los modelos y algo de lógica lo voy a entender mal, pero las 3 querys que haces las puedes hacer de 1 sola vez:





$user = Yii::app()->db->createCommand()

    ->select('id,nombre,apellido')

    ->from('tbl_persona')    

    ->where('cedula=:cedula', array(':cedula'=>$cedula))

    ->queryRow();

    

$id = $user ['id'];

$nombre = $user ['nombre'];

$apellido = $user ['apellido'];



Si quieres simplicidad, utiliza la extensión Yiibooster, en particular este control:

Texto Asistido

Más fácil imposible.

Un saludo.