Drupal 7에서 현재 로그인 한 사용자의 역할을 얻는 방법은 무엇입니까? 이 작업을 수행하는 간단한 방법을 알고 있습니까? 거기에 대한 일부 drupal 핵심 기능이 있습니까?Drupal 7에서 현재 로그인 한 사용자의 역할을 얻는 방법은 무엇입니까?
17
A
답변
23
당신은 그냥이 PHP 조각 사용하여 사용자 역할에 액세스 할 수 있습니다
global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
// is admin
} else {
// is not admin
}
9
을 > roles는 역할 ID로 입력 된 사용자에게 속한 역할의 배열이고, value는 역할 문자열입니다. 와 in_array
global $user;
if (in_array('authenticated user', $user->roles)) {
//do stuff here
}
참고 : 사용자가이 있다면 당신이 확인하고 싶어한다면 역할은 '사용자 인증'같은 것을 보일 것이다 당신의 코드 (반드시 가장 최적화 된 방법은,와 in_array는 상당히 성능 비싼 기능입니다) 배열을 "needle"(인수 # 1)으로 받아 들일 수 있으므로 여러 역할 옵션을 확인할 수 있습니다.
in_array(array('authenticated user', 'anonymous user'), $user->roles);
24
$ 사용자 - : 나는 사용자의 여러 역할을 확인하기 위해 흥미로운 솔루션을 발견
<?php $GLOBALS['user']->roles; ?>
1
// 현재 로그인 한 사용자를로드하십시오.
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;
}
감사하면됩니다, 그는 관리자인지 확인합니다. 고맙습니다. – zhilevan
두 번째 '배열 된'바늘 조각 인 [docs] (http://php.net/manual/en/function.in-array.php) 및 간단한 테스트 코드에서'in_array'를 묻습니다. '$ user-> roles'가'인증 된 사용자 '또는'익명의 사용자'가 아닌'array ('인증 된 사용자', '익명의 사용자')'의 배열을 포함하고 있는지 확인합니다. . [array_intersect()] (http://php.net/manual/en/function.array-intersect.php)도 그렇게 할 것입니다. –