如何使用用户网格视图中的用户角色进行过滤?

时间:2014-10-30 15:30:47

标签: php yii yii-extensions

如何使用用户网格视图中的用户角色过滤记录?

我正在使用yii-user扩展程序。我能够在用户/管理网格视图上显示用户的角色,但我可以在此使用过滤器吗?以下是我的观点:

   $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'user-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'name' => 'id',
            'type'=>'raw',
            'value' => 'CHtml::link(CHtml::encode($data->id),array("admin/update","id"=>$data->id))',
        ),
        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'=>'superuser',
            'value'=>'User::itemAlias("AdminStatus",$data->superuser)',
            'filter'=>User::itemAlias("AdminStatus"),
        ),*/
        array(
            'name'=>'status',
            'value'=>'User::itemAlias("UserStatus",$data->status)',
            'filter' => User::itemAlias("UserStatus"),
        ),
        array(
            //'name'=>'assignments',
            'header'=>Rights::t('core', 'Roles'),
            'type'=>'raw',
            'value'=>function($data) {
                                        $roles = Rights::getAssignedRoles($data->id);
                                        foreach($roles as $role){
                                            $user_role=$role->name;
                                        }
                                         return $user_role;
                                    }
        ),
        array(
            'class'=>'CButtonColumn',
            'template'=>'{view}{delete}'
        ),
    ),
));

1 个答案:

答案 0 :(得分:1)

您可以添加如下过滤器:

array(
        //'name'=>'assignments',
        'header'=>Rights::t('core', 'Roles'),
        'type'=>'raw',
        'filter'=>CHtml::listData(Rights::model()->findAll(),'id','name'), //***
        'value'=>function($data) {
                                    $roles = Rights::getAssignedRoles($data->id);
                                    foreach($roles as $role){
                                        $user_role=$role->name;
                                    }
                                     return $user_role;
                                }
    ),

我认为Rights是一个模型,并使用idname在其上保留角色。

通过我在评论中指出***的行,Yii将生成一个下拉列表作为过滤器,将角色名称显示为选项值,将角色ID显示为选项值。