Bagaimana cara menemukan id peran dari nama peran?


17

Saat login saya ingin memeriksa sumber data pihak ketiga (tabel di db) untuk pengguna, dan jika ditemukan saya ingin menambahkan peran ke pengguna itu.

Saya tidak ingin menebak perannya, saya ingin mendapatkannya dari nama peran.

Jawaban:


20

Ini cukup mudah dengan user_roles () dan array_search () . Di bawah ini adalah fungsi yang akan mengembalikan ID peran jika ada peran yang cocok dengan nama dan SALAH sebaliknya.

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

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

Satu liner adalah:

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

1
Kueri yang dieksekusi oleh user_roles () ditandai dengan terjemahan , yang artinya sebuah modul dapat menerjemahkan nama peran. Drupal menerjemahkan nama peran hanya untuk peran default (yaitu pengguna anonim, dan pengguna yang diautentikasi).
kiamlaluno

32

Mengetahui nama mesin peran, itu sudah cukup untuk digunakan user_role_load_by_name().

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

Jika Peran mungkin tidak ada ...

$role = user_role_load_by_name('Role Name');

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

3
Saya lebih suka pendekatan ini, karena dengan pendekatan lain nama peran dapat diterjemahkan. Faktanya, kueri yang dieksekusi oleh user_roles () ditandai dengan dapat diterjemahkan . Drupal hanya menerjemahkan nama untuk peran default, tetapi sebuah modul bisa menerjemahkan nama peran lainnya juga.
kiamlaluno

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

-3

Cara terbaik untuk mengidentifikasi peran dan id-nya adalah dari SQL. Jalankan kueri ini di editor SQL Anda.

select * from roles;

Dan Anda akan mendapatkan daftar Peran termasuk id dan berat.


1
Cara terbaik adalah menggunakan API yang disediakan oleh Drupal. Mengakses langsung basis data, ketika ada API, tidak pernah merupakan ide yang baik, juga bukan cara terbaik.
kiamlaluno

Ini adalah cara yang sangat mudah untuk mendapatkan peran! Saya tidak heran Polisi Drupal Stack Exchange menolak solusi sederhana itu.
BlondeSwan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.