18 Stimmen

Wie erhält man die Rolle des aktuell angemeldeten Benutzers in Drupal 7?

Wie erhält man die Rolle des aktuell angemeldeten Benutzers in Drupal 7? Kennen Sie einen einfachen Weg, um dies zu erreichen? Gibt es einige Drupal-Kernfunktionen für diese Aufgabe?

28voto

mattacular Punkte 1839

$user->roles ist ein Array der Rollen, die dem Benutzer gehören, verschlüsselt durch die Rollen-ID, value ist die Rollenzeichenfolge. Wenn Sie also prüfen wollten, ob der Benutzer die Rolle "authentifizierter Benutzer" hat, würde Ihr Codeschnipsel etwa so aussehen (nicht unbedingt der optimalste Ansatz, in_array ist eine ziemlich leistungsintensive Funktion):

global $user;

if (in_array('authenticated user', $user->roles)) {
     //do stuff here
}

Beachten Sie, dass in_array auch ein Array als "Nadel" (Argument #1) akzeptieren kann, so dass Sie gegen mehrere Rollenoptionen prüfen können:

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

26voto

Artusamak Punkte 2400

Sie können auf die Benutzerrollen zugreifen, indem Sie einfach dieses PHP-Snippet verwenden:

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

9voto

radu c Punkte 4088

Ich habe eine interessante Lösung gefunden, um nach mehreren Rollen eines Benutzers zu suchen:

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

2voto

Developer Punkte 3577

// Laden Sie den aktuell angemeldeten Benutzer.

 global $user;
 print_r($user->roles);//this gives you current user roles

//um zu überprüfen, ob er Administrator ist, können Sie dies tun, indem Sie

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X