Hola, soy nueva con Yii y hasta ahora he ido adelandando bastante pero me he topado con un muro que no consigo saltar.
He creado un formulario de usuario para tratar datos de dos tablas distintas. En él tengo un select para seleccionar a una persona. Mi intención es que al canviar el selector se modifiquen los datos de los campos correpondientes a la persona. Para ello he intentado que los cambios me los haga con Ajax en una capa donde tengo todos los datos de la persona agrupados, pero mi sorpresa es que siempre me sustituye los datos por la ventana de la aplicación que tubiera en caché. Creo que he hecho todo lo que debía para solucionar el tema de la cache, poner la cache a false, incluir una variable con valores diferentes en cada intento, etc, pero no lo logro.
Este es el cógido del formulario:
...
<div class="row">
<?php echo $form->labelEx($modelUser,'id_personal'); ?>
<?php echo $form->dropDownList($modelUser,
'id_personal',
CHtml::listData($modelPersonal::model()->findAll(), 'id', 'nom'),
array( 'empty'=>'Sense persona vinculada',
'ajax' => array('type'=>'POST',
'cache'=>false,
'url'=>CController::createUrl('user/getPersonalInfo').'?s='.date('YmdHs'),
'data'=>array('id_user'=>$modelUser->id,
'id_persona'=>'js:this.value',
'time'=>date('YmdHs')),
'update'=>'#user-form' )); ?>
<?php echo $form->error($modelUser,'id_personal'); ?>
</div>
Y en el controlador:
public function accessRules()
{
return array(
array( 'allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('index','view','create','update','admin','delete','GetPersonalInfo'),
'roles'=>array('Admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
...
public function actionGetPersonalInfo(){
echo "Acción des de actionGetPersonalInfo( )";
$id_usuari = $_POST['id_user'];
$id_personal = $_POST['id_persona'];
$modelUser=$this->loadModel($id_usuari); //echo $modelUser->id_personal;
$modelPersonal = $this->loadModel_Personal($id_persona); //echo '<br>'.$modelPersonal->email;
$modelUser->password = '';
$modelUser->password2 = '';
$this->renderPartial('application.views.user._form', array(
'modelUser'=>$modelUser,
'modelPersonal'=>$modelPersonal,
), false, true);
}
A la acción del controlador no le hace ni caso, aunque si no encuentra la función sí que da error.
La capa la sustituye con la pàgina al completo anterior o de otro usuario, o hasta con la principal del menú. Yo entiendo que esas páginas son las que guarda en cache el navegador.
El problema no es con un navegador en concreto, me pasa con varios (FF, IE, etc.)
Muchas gracias,