如何在Yii 2 GridView小部件中打印用户角色?我尝试过代码:
公共函数getUserRole($ id) { $ roles = \ Yii :: $ app-> authManager-> getRolesByUser($ id);
$role = '';
foreach($roles as $key => $value)
{
$role = $key;
}
return $this->role = $role;
}
在用户模型类中但它无法正常工作。每个用户只分配了一个角色。非常感谢您的帮助。
答案 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;
}