首页 文章

gridview中的用户角色

提问于
浏览
0

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

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

$role = '';

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

    return $this->role = $role;
}

在用户模型类中,但它不起作用 . 每个用户只分配了一个角色 . 非常感谢任何帮助 .

2 回答

  • 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的规则中

  • 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;
       }
    

相关问题