如何获取当前登录的用户';Drupal7中的角色是什么?

如何获取当前登录的用户';Drupal7中的角色是什么?,drupal,login,drupal-modules,drupal-7,Drupal,Login,Drupal Modules,Drupal 7,如何在Drupal 7中获取当前登录用户的角色?你知道一个简单的方法吗?是否有一些drupal核心函数用于此功能?您只需使用以下PHP代码片段即可访问用户角色: <?php $GLOBALS['user']->roles; ?> 我找到了一个有趣的解决方案来检查用户的多个角色: global $user; $check = array_intersect(array('moderator', 'administrator'), array_values($user->r

如何在Drupal 7中获取当前登录用户的角色?你知道一个简单的方法吗?是否有一些drupal核心函数用于此功能?

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

<?php $GLOBALS['user']->roles; ?>

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

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

$user->roles是由角色ID键入的属于用户的角色数组,值是角色字符串。因此,如果您想检查用户是否具有“authenticated user”角色,您的代码片段将如下所示(不一定是最优化的方法,in_array是一个性能相当昂贵的函数):

请注意,in#u数组也可以接受数组作为“指针”(参数#1),因此您可以检查多个角色选项:

in_array(array('authenticated user', 'anonymous user'), $user->roles);

//加载当前登录的用户

 global $user;
 print_r($user->roles);//this gives you current user roles
//要检查他是否是管理员,您可以通过

  if (in_array('administrator', $user->roles)) {
            // do some stuff
            $form['field_end_date']['#disabled'] = FALSE;
    }

在第二个“阵列式”针剪和一个快速的测试代码上,您要求数组中的
检查
$user->roles
是否包含
数组('authenticated user','anonymous user')
,而不是单个元素
'authenticated user'
'anonymous user'
。不过,我会为此而努力的。
  if (in_array('administrator', $user->roles)) {
            // do some stuff
            $form['field_end_date']['#disabled'] = FALSE;
    }