llenado de ccgridview con dao

Amigos.

En mi reciente exploracion de yii y gracias a ustedes he podido estirar los dedos y avanzar quizas en lo basico, sobre todo en la customizacion de los CRUD. Ahora lo que requiero es construir mi propio mantenedor . Pretendo emular los diseños que genera gii. Pero la verdad me enredo muchisimo , se que tengo que llenar un ccgridview con una consulta a base de datos ( mysql) la cual ya la logre ejecutar ( conectando y sacando datos ) , pero como dije me enredo en saber donde pongo la consulta DAO , ( Modelo , vista o controlador ) , asi mismo como seria basicamente la estructura del las rutinas CONTROLADOR, VISTAS Y MODELOS. y como le paso los valores de la consulta a ccgridwiev, he revisado manuales pero me comienzo a enredar.

Agradezco cualquier aclaracion al respecto.

Gracias

Hola David,

Generalmente desde donde se ponen las llamadas a la base de datos (o los modelos) suele ser en los controladores, pero hay situaciones en donde esto deberá ir dentro del propio modelo… es cierto que también se puede poner en la vistas, pero es mejor evitarlo tanto como sea posible.

Casi todos los widgets (incluyendo CGridView) necesitan un origen de datos, ya sea en la forma de DataProvider o de Model, que normalmente estarán declarados en el Controller y pasados a la vista a través de la instrucción:


$this->render('myview',array('model'=>$model));

Espero que esto ayude. Si nos da más información del problema tal vez podamos darle más información al respecto.

Saludos y éxitos,

Ricardo

Estimados, para hacer una prueba, coloque todo en el controlador, este es mi codigo :

public function actionAdmin()


{


	


    $sql = "SELECT sis_sistemas.sis_nom_sistema, men_menu.men_id_menu_sistema, men_menu.men_des_text


    FROM men_menu INNER JOIN sis_sistemas ON (men_menu.sis_id_sistema = sis_sistemas.sis_id_sistema)";   


    $dataProvider=new CSqlDataProvider($sql);


    $count=$dataProvider->GetItemCount(false);


    $dataProvider=new CSqlDataProvider($sql,array('totalItemCount'=>$count,'pagination'=>array(


    'pageSize'=>'10'))); 


    $this->widget('zii.widgets.grid.CGridView', array(


    'id'=>'grilla',


    'dataProvider'=>$dataProvider,


	


    'columns'=>array(


        array(  


         'name' => 'Sistema',  


         'type' => 'raw',  


		 'value' => '$data->sis_sistemas.sis_nom_sistema',


        ),  





        array(  


         'name' => 'Id',  


         'type' => 'raw',  


         'value' => 'CHtml::encode(men_menu.men_id_menu_sistema)' 


        ),  





        array(  


         'name' => 'Opcion',  


         'type' => 'raw',  


         'value' => 'CHtml::encode(men_menu.men_des_text)' 


        ),  


	


	)));


}

}

No me da error y me despliega solo el mensaje : Desplegando 1-5 de 5 resultado(s). lo que es correcto, pero luego solo me despliega los titulos de las columnas y luego los textos de los campos y no su contenido.

En el codigo pueden ver que probe dos formas pero no me entrega el valor.

Gracias de antemano.

Hola David,

Detecto un error en:


'value' => 'CHtml::encode(men_menu.men_id_menu_sistema)' 

Debería ser:


'value' => 'CHtml::encode($data, "men_id_menu_sistema")' 

Saludos y éxitos,

Ricardo

Ricardo.

No funciona… sigue todo en blanco.

Alguna otra idea ?