如何在Drupal 7中获取当前登录用户的角色?

Ek *_*mos 17 drupal login drupal-7 drupal-modules

如何在Drupal 7中获取当前登录用户的角色?你知道一个简单的方法吗?这有什么drupal核心功能吗?

mat*_*lar 25

$ user-> roles是属于由角色ID键入的用户的角色数组,value是角色字符串.因此,如果您想检查用户是否具有"经过身份验证的用户"角色,则您的代码段看起来就像这样(不一定是最优化的方法,in_array是一个性能相当昂贵的函数):

global $user;

if (in_array('authenticated user', $user->roles)) {
     //do stuff here
}
Run Code Online (Sandbox Code Playgroud)

请注意,in_array也可以接受一个数组作为"needle"(参数#1),因此您可以检查多个角色选项:

in_array(array('authenticated user', 'anonymous user'), $user->roles);
Run Code Online (Sandbox Code Playgroud)

  • 在第二个'阵列'针snippit,[根据文档](http://php.net/manual/en/function.in-array.php)和一些测试代码,你问`in_array`检查`$ user-> roles`是否包含`array('authenticated user','anonymous user')`的数组,而不是单个元素`'authenticated user'`或''anonymous user'`.[array_intersect()](http://php.net/manual/en/function.array-intersect.php)可以解决这个问题. (4认同)

Art*_*mak 24

您只需使用此PHP代码段即可访问用户角色:

<?php $GLOBALS['user']->roles; ?>
Run Code Online (Sandbox Code Playgroud)


Ek *_*mos 9

我找到了一个有趣的解决方案来检查用户的多个角色:

global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
    // is admin
} else {
    // is not admin
}
Run Code Online (Sandbox Code Playgroud)