1

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

描述:我正在使用用户和权限扩展。我想在用户/管理员的网格视图中显示用户的角色。并按用户角色过滤。我怎样才能?

这是我的看法

$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;
    }
4

2 回答 2

2

尝试添加 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`
于 2012-09-10T06:12:30.967 回答
0

下面的示例应该可以解决问题。将其复制到您的列数组中。

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 文件。

于 2013-11-11T12:02:00.760 回答