buenas en mi caso lo que necesito es que segun el rol del usuario vea la informacion en el grid de admin parcia o total, o sea si eres adminA que solo vea la info de adminA o si eres super lo puedas ver todo, alguna sugerencia
public function search()
{
//recupero los datos del usuario
$usuario= UserCruge::model()->findByAttributes(array('iduser'=> Yii::app()->user->id));
$criteria=new CDbCriteria;
/*valido q la informacion del grid se muestre acorde con el id del usuario logeado para ello verifico si es un "admin"
(en mi caso no tengo sino admin y usuario de roles) pues le deja ver todos los regiustros del grid,
en caso de ser otro roll muestra el filtro que le aplico de acuerdo al id....
ya seria q en tu caso jugaras con esta regla <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/biggrin.gif' class='bbc_emoticon' alt=':D' />*/
if (Yii::app()->user->checkAccess('admin'))
{
$criteria->compare('pers_auxi',$this->pers_auxi);
}
else
{
$criteria->compare('pers_auxi',$usuario->pers_auxi);
}
$criteria->compare('vehr_codi',$this->vehr_codi);
$criteria->compare('eslv_codi',$this->eslv_codi);
$criteria->compare('eslv_clas',$this->eslv_clas,true);
$criteria->compare('eslv_tipo',$this->eslv_tipo,true);
$criteria->compare('eslv_anio',$this->eslv_anio);
$criteria->compare('eslv_valo',$this->eslv_valo,true);
$criteria->compare('eslv_fech',$this->eslv_fech,true);
$criteria->compare('esta_codi',$this->esta_codi,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Por lo que entiendo quieres q un CGridView muestre más o menos columnas dependiendo del rol de usuario, no?
Pues bien. Las columnas de los CGridViews tienen una propiedad llamada visible. Entonces lo que tienes que hacer en mostrar o ocultar la columna dependiendo del rol del usuario.
Imaginemos que tienes una propiedad en tu user llamada isAdmin() que devuelva true si somos administradores o false si no lo somos. Pues podríamos tener el siguiente código para las columnas del CGridView:
muchas gracias por la respuesta pq no sabia lo del visible en las columnas del grid, pero mas bien en vez de las columnas lo que variaria es las filas o sea la info dentro del grid segun el rol del usuario. esa es la duda que tengo, lo misma que tengo para segun el rol del usuario loggeado en el create me salga un dropdown con el campo predeterminado ej
dropdown
infoa
infob
infoc
cuando se loguee el usuario con el rol admina, quisiera que cdo fuera insetart una entidad(que es lo que se hace en el sistema) solamente en el combo le salga infoa que es la que a el le pertenece. gracias
Pero entonces lo que tienes que modificar es la función que carga el dataprovider de tu CGridView (supongo que $model->search()), añadiéndole una condición con el tipo de usuario logueado.
De hecho, te lo ha explicado erickMartinez en un post anterior.