Obecnie zalogowane role użytkownika

18

Jak zdobyć aktualnie zalogowane role użytkownika w Drupal 8?

Na przykład w D7 mamy $GLOBALS['user']->roles;

graceman9
źródło

Odpowiedzi:

31

Coś jak:

$current_user = \Drupal::currentUser();
$roles = $current_user->getRoles();

zwróci tablicę taką jak:

Array
(
  [0] => authenticated
  [1] => administrator
  [2] => some_other_role
)

gdzie wartościami tablicowymi są identyfikatory ról (równoważne nazwie maszyny roli w Drupal 7). W kodzie OO użyj odpowiedniego mechanizmu, aby pobrać bieżącego użytkownika z kontenera, np

$current_user = $container->get('current_user');
mpdonadio
źródło
Dobra odpowiedź, czy możesz dodać kod $container?
Uczeń
@Pupil, aby uzyskać dostęp do kontenera w kontekście OO, należy utworzyć klasę i użyć wstrzykiwania zależności, aby wywołać go, jak pokazano tutaj, na przykład drupal.org/docs/8/api/services-and-dependency-injection/…
wranvaud
0

Aby uzyskać bieżącą rolę użytkownika w Drupal 8 -

$role = \Drupal::currentUser()->getRoles();
foreach ($role as $value) {
   $role = $value;
}
Wasim Khan
źródło