Hola a todos, les cuento la complicación que me ha surgido (una de tantas hasta ahora) por si alguien conoce la solución y me puede dar una mano, tengo un CGridView que carga los datos con los tratamientos realizados a un paciente pasando como parametro el id de la ficha de este paciente (tengo una tabla en mi bd para pacientes que está relacionada con ficha, ficha con una tabla tratamientos_realizados, y esta se relaciona con tratamientos que es solo la tabla que contiene los nombres y la descripción de estos ), los datos se cargan sin ninguna complicación, el problema surge a la hora de filtrar ya que no ocurre nada, ni se recarga la página ni se lanza un mensaje de error por lo cual acudo a ustedes por si han pasado por esto antes, para que me indiquen si me falta algo o estoy haciendo algo mal. Gracias desde ya, saludos.
Mi código es el siguiente
El mantenedor es este y se encuentra en la view de FichaDental
<?php
$this->widget('zii.widgets.CDetailView', array(
'data' => $model,
'attributes' => array(
array(
'label' => 'Nombre:',
'value' => obtieneNombre($model),
),
),
));
?>
<h3><?php echo 'Tratamientos del paciente'; ?></h3>
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'TratamientosRealizados',
'dataProvider' => TratamientoRealizado::model()->searchByPaciente($model->id_ficha),
'filter' => TratamientoRealizado::model(),
'columns' => array(
'id_realizado',
'id_ficha',
'id_tratamiento',
'comentario',
'valor',
'fecha',
array(
'class' => 'CButtonColumn',
'template' => '{view}{update}{delete}', // botones a mostrar
'updateButtonUrl' => 'Yii::app()->createUrl("/TratamientoRealizado/update&id=$data->id_realizado" )', // url de la acción 'update'
'deleteButtonUrl' => 'Yii::app()->createUrl("/TratamientoRealizado/delete&id=$data->id_realizado" )', // url de la acción 'delete'
'viewButtonUrl' => 'Yii::app()->createUrl("/TratamientoRealizado/view&id=$data->id_realizado" )', // url de la acción 'delete'
'deleteConfirmation' => 'Seguro que quiere eliminar el elemento?', // mensaje de confirmación de borrado
'afterDelete' => '$.fn.yiiGridView.update("TratamientosRealizados");', // actualiza el grid después de borrar
),
),
));
//Funciones
function obtieneNombre($model) {
$idFicha = FichaDental::model()->findByAttributes(array('id_ficha' => $model->id_ficha));
$nombrePaciente = Paciente::model()->findByAttributes(array('rut_paciente' => $idFicha->rut_paciente));
return $nombrePaciente->nombre_paciente . " " . $nombrePaciente->apellidos_paciente;
}
?>
En el controller de Ficha dental tengo este action
public function actionTratamientoPaciente($id) {
$this->render('tratamientoPaciente', array(
'model' => $this->loadModel($id),
));
}
En el modelo tratamiento realizado tengo el método que realiza la búsqueda
public function searchByPaciente($id)
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id_ficha',$id,true);
$criteria->compare('id_realizado',$this->id_realizado);
$criteria->compare('id_tratamiento',$this->id_tratamiento);
$criteria->compare('comentario',$this->comentario,true);
$criteria->compare('valor',$this->valor);
$criteria->compare('fecha', $this->fecha);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}