gridview中的用户角色

时间:2015-03-17 08:36:15

标签: gridview yii2 rbac

如何在Yii 2 GridView小部件中打印用户角色?我尝试过代码:

公共函数getUserRole($ id)     {         $ roles = \ Yii :: $ app-> authManager-> getRolesByUser($ id);

    $role = '';

    foreach($roles as $key => $value)
    {
        $role = $key;
    }

    return $this->role = $role;
}
在用户模型类中

但它无法正常工作。每个用户只分配了一个角色。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

好的,我明白了!

查看:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        //'id',
        [
        'label' => 'Nazwa użytkownika',
        'value' => 'username'
        ],
        //'auth_key',
        //'password_hash',
        //'password_reset_token',
        'email:email',
        [
            'label' => 'Rola',
            'value' => 'userRole',
        ],
        // 'status',
        // 'created_at',
        // 'updated_at',

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>
用户模型类中的

方法:

public function getUserRole()
{
    $roles = \Yii::$app->authManager->getRolesByUser($this->id);

    $role = '';

    foreach($roles as $key => $value)
    {
        $role = $key;
    }

    return $role;
}

在UserSearch类属性中:

public $userRole;

[['userRole'], 'safe'] 

在UserSearch的规则中

答案 1 :(得分:0)

 public static function getFirstRole($userID) {
       $role = array_values(Yii::$app->getAuthManager()->getRolesByUser($userID));
       if (isset($role[0])) {
           $role = $role[0];
       } else {
           $role = Yii::$app->getAuthManager()->getRole('YOUR_DEFAULT_ROLE');
       }

       return $role;
   }