Programlı olarak kullanıcıları rolüne nasıl alırım


19

Drupal 8'de rol adına göre tüm kullanıcıları almam gerekiyor.

Yanıtlar:


29

Üzgünüz, ilk kez yanlış mülk adı kullanılmış, bir cevap:

use  \Drupal\user\Entity\User;

$ids = \Drupal::entityQuery('user')
->condition('status', 1)
->condition('roles', 'moderator')
->execute();
$users = User::loadMultiple($ids);

dpm($users);

1
'Moderatörün' sorunun önerdiği gibi rolün adı (etikette olduğu gibi) değil, aslında rolün kimliği olduğu belirtilmelidir.
1919

10

Bağımlılık enjeksiyonunu veya varlık depolama işleyicisini kullanabileceğiniz bir sınıfdaysanız, bunu da yapabilirsiniz:

$user_storage = \Drupal::service('entity_type.manager')->getStorage('user');

$ids = $user_storage->getQuery()
  ->condition('status', 1)
  ->condition('roles', 'moderator')
  ->execute();
$users = $user_storage->loadMultiple($ids);

-2

Uygun yol, entityStorage tanıtıcısını almak için entityTypeManager'ı kullanmak ve kimlikleri yüklemek için kullanmaktır. Bazı örnekler:

\Drupal::service('entity_type.manager')->getStorage('user')->load($uid);
\Drupal::service('entity_type.manager')->getStorage('user')->loadMultiple([$uid1, $uid2]);

2
Bu işe yaramıyor. Bu, istenen soru gibi kullanıcıları rolle almaz.
1919
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.