Drupal Условный PHP, если администратор или пользователь играют определенную роль - PullRequest
3 голосов
/ 06 сентября 2011

Следующее будет делать что-то, если пользователь является администратором.

<?php if (($is_admin)) : ?>
  do something
<?php endif; ?>

Как я могу изменить это, чтобы что-то происходило, если пользователь является администратором или имеет определенную роль? Спасибо

Ответы [ 3 ]

5 голосов
/ 06 сентября 2011

Роли хранятся в $user->roles.Чтобы проверить, «является ли пользователь администратором или имеет определенную роль», вы можете просто:

if ($is_admin || in_array('some_role', $user->roles)):
1 голос
/ 24 июля 2014
function user_has_role($roles) {
    return !!count(array_intersect(is_array($roles)? $roles : array($roles), array_values($GLOBALS['user']->roles)));
}

с помощью этой функции вы можете проверить, есть ли у пользователя одна или несколько ролей.хотя это может быть полезно в качестве значения 'access callback'

1 голос
/ 27 сентября 2013

Для проверки, принадлежит ли пользователь одной или нескольким ролям, вы можете сделать:

global $user;
$allowed_roles = array('customer', 'administrator');

if(count(array_intersect($user->roles, $allowed_roles)) > 0){
  // do something useful here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...