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.