Модуль Drupal Group, программно добавляет пользователя в группу с определенной ролью - PullRequest
0 голосов
/ 04 февраля 2020

Этот вопрос относится к Drupal 8 Групповой модуль , https://www.drupal.org/project/group

Я застрял и мне нужна помощь с тем, как программировать добавить пользователя в группу с определенной ролью. Я пытаюсь назначить пользователя для группы и роли через импорт каналов, но не могу понять, как это сделать. Для уточнения, скажем, у нас есть две группы DEV и QA. DEV имеет тип группы A, а QA - тип группы B. Обе группы типа A и B имеют роли X, Y и Z (групповые роли). Теперь у меня есть учетная запись пользователя $, и я хочу, чтобы ее добавили в группу QA с ролью Y. Может ли кто-нибудь помочь и указать способ, которым я могу достичь этого программным путем? Примеры кода / фрагменты будут очень полезны.

1 Ответ

1 голос
/ 04 февраля 2020

Какой-то старый код здесь, который может помочь. Пришлось выкопать его из git, через пару лет удалил go, так как больше не нужен проекту. Может быть устаревшим!

Вы загружаете группу и используете функцию $ group-> addMember (). Я только что добавил члена, но вы можете добавить второй параметр, который является ассоциативным массивом, который может указывать роли, к которым нужно добавить.

$new_user = \Drupal\user\Entity\User::load($some_user_id);

// Get the group entity.
$gid = $form_state->getValue('gid');
$group = \Drupal::entityTypeManager()
  ->getStorage('group')
  ->load($gid);

// Add user as a member of the group.
$group->addMember($new_user);

// Set the owner of the group to be the user.
$group->set('uid', $new_user_id);

// Save changes to group. Anything below here should only be changes to
// Group Content.
$group->save();
$tags = $group->getCacheTagsToInvalidate();
Cache::invalidateTags($tags);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...