Come posso trovare l'ID ruolo dal nome ruolo?


17

All'accesso voglio controllare un'origine dati di terze parti (tabella nel database) per un utente e, se trovato, voglio aggiungere un ruolo a quell'utente.

Non voglio indovinare la liberazione del ruolo, voglio ottenerlo dal nome del ruolo.

Risposte:


20

Questo è abbastanza semplice con user_roles () e array_search () . Di seguito è una funzione che restituirà l'ID ruolo se esiste un ruolo che corrisponde al nome e FALSO altrimenti.

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

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

Una fodera sarebbe:

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

1
La query eseguita da user_roles () è contrassegnata come traducibile , il che significa che un modulo potrebbe tradurre i nomi dei ruoli. Drupal traduce i nomi dei ruoli solo per i ruoli predefiniti (ovvero utente anonimo e utente autenticato).
kiamlaluno

32

Conoscendo il nome della macchina del ruolo, è sufficiente utilizzarlo user_role_load_by_name().

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

Se il ruolo potrebbe non esistere ...

$role = user_role_load_by_name('Role Name');

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

3
Preferisco di gran lunga questo approccio, poiché con l'altro approccio i nomi dei ruoli potrebbero essere tradotti. In effetti, la query eseguita da user_roles () è contrassegnata come traducibile . Drupal traduce solo i nomi per i ruoli predefiniti, ma un modulo potrebbe tradurre anche gli altri nomi di ruoli.
kiamlaluno

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

-2

Il modo migliore per identificare il ruolo e il suo ID è da SQL. Esegui questa query nel tuo editor SQL.

select * from roles;

E otterrai l'elenco dei ruoli inclusi ID e peso.


1
Il modo migliore è utilizzare l'API fornita da Drupal. L'accesso diretto al database, quando esiste un'API, non è mai una buona idea, né il modo migliore.
kiamlaluno

Questo è un modo molto semplice per ottenere i ruoli! Non mi sorprende che la polizia di scambio di stack Drupal abbia votato giù una soluzione così semplice.
BlondeSwan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.