yii扩展:如何向用户展示';在用户网格视图中的角色


yii extension : how to show the user's role at user grid view?

Q:如何在用户网格视图中显示用户角色?

描述:我正在使用用户和权限扩展。我想在user/admin的网格视图中显示用户的角色。并按用户角色进行筛选。我该怎么办?

这是我的观点

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'name' => 'username',
            'type'=>'raw',
            'value' => 'CHtml::link(UHtml::markSearch($data,"username"),array("admin/view","id"=>$data->id))',
        ),
        array(
            'name'=>'email',
            'type'=>'raw',
            'value'=>'CHtml::link(UHtml::markSearch($data,"email"), "mailto:".$data->email)',
        ),
        'create_at',
        'lastvisit_at',
        array(
            'name'=>'status',
            'value'=>'User::itemAlias("UserStatus",$data->status)',
            'filter' => User::itemAlias("UserStatus"),
        ),
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));

这是我的控制器

public function actionIndex()
    {
        $rasdataProvider = new RAssignmentDataProvider();
        $dataProvider=new CActiveDataProvider('User', array(
            'criteria'=>array(
                'condition'=>'status>'.User::STATUS_BANNED,
            ),
            'pagination'=>array(
                'pageSize'=>Yii::app()->controller->module->user_page_size,
            ),
        ));
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
            'rasdataProvider'=>$rasdataProvider,
        ));
    }

更新#1

这是user.php 的关系

    public function relations()
    {
        $relations = Yii::app()->getModule('user')->relations;
        if (!isset($relations['profile']))
            $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');
        return $relations;
    }

尝试添加profile.role

'columns'=>array(
    array(
        'name' => 'username',
        'type'=>'raw',
        'value' => 'CHtml::link(UHtml::markSearch($data,"username"),array("admin/view","id"=>$data->id))',
    ),
    'profile.role', // through relation `profile`

下面的例子就可以了。将其复制到列数组中。

array(
    'name'=>'assignments',
    'header'=>Rights::t('core', 'Roles'),
    'type'=>'raw',
    'htmlOptions'=>array('class'=>'role-column'),
    'value'=>'$data->getAssignmentsText(CAuthItem::TYPE_ROLE)',
),

这是从rights/view/assignment/view.php文件中获取的。