Jak znaleźć identyfikator roli na podstawie nazwy roli?


17

Podczas logowania chcę sprawdzić źródło danych innej firmy (tabela w db) dla użytkownika, a jeśli zostanie znalezione, chcę dodać rolę do tego użytkownika.

Nie chcę odgadnąć roli, chcę ją uzyskać z nazwy roli.

Odpowiedzi:


20

Jest to dość proste w przypadku user_roles () i array_search () . Poniżej znajduje się funkcja, która zwróci identyfikator roli, jeśli istnieje rola pasująca do nazwy, w przeciwnym razie FALSE.

function get_role_by_name($name) {
  $roles = user_roles();
  return array_search($name, $roles);
}

// Sample usage
$rid = get_role_by_name('administrator');

Jedna wkładka to:

$rid = array_search('administrator', user_roles());

1
Kwerenda wykonana przez user_roles () jest oznaczona jako możliwa do przetłumaczenia , co oznacza, że ​​moduł może tłumaczyć nazwy ról. Drupal tłumaczy nazwy ról tylko dla ról domyślnych (tj. Użytkownika anonimowego i użytkownika uwierzytelnionego).
— kiamlaluno

32

Znając nazwę maszyny roli, wystarczy użyć user_role_load_by_name().

if ($role = user_role_load_by_name('Role Name')) {
  // The role ID is in $role->rid.
}

Jeśli rola może nie istnieć ...

$role = user_role_load_by_name('Role Name');

$role_id = $role ? $role->rid : NULL;

3
Zdecydowanie wolę to podejście, ponieważ w drugim podejściu nazwy ról mogłyby zostać przetłumaczone. W rzeczywistości zapytanie wykonane przez user_roles () jest oznaczone jako podlegające tłumaczeniu . Drupal tłumaczy tylko nazwy domyślnych ról, ale moduł może również tłumaczyć inne nazwy ról.
— kiamlaluno

4
$ rid = ($ role = user_role_load_by_name ())? $ role-> rid: NULL;
— Pierre Buyle

-2

Najlepszym sposobem na identyfikację roli i jej identyfikatora jest SQL. Uruchom to zapytanie w edytorze SQL.

select * from roles;

Otrzymasz listę ról, w tym identyfikator i wagę.


1
Najlepszym sposobem jest użycie interfejsu API dostarczonego przez Drupal. Bezpośredni dostęp do bazy danych, gdy istnieje interfejs API, nigdy nie jest dobrym pomysłem ani najlepszym sposobem.
— kiamlaluno

To bardzo łatwy sposób na uzyskanie ról! Nie dziwię się, że policja wymiany stosów Drupal głosowała za tak prostym rozwiązaniem.
— BlondeSwan,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.