新用户注册时分配默认角色 - drupal 8

Posted

技术标签:

【中文标题】新用户注册时分配默认角色 - drupal 8【英文标题】:Assign default role when new user register - drupal 8 【发布时间】:2020-05-30 19:33:58 【问题描述】:

我正在尝试为所有新注册用户分配默认角色。但我得到了

Error: Call to a member function addRole() on array in my_module_user_insert()

我的代码是

function my_module_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id)

if ($form_id == 'user_register_form') 
unset($form['account']['mail']['#description']);
unset($form['account']['name']['#description']);
unset($form['account']['pass']['#description']);
$form['actions']['submit']['#submit'][] = 'my_module_user_insert';
  

function my_module_user_insert($entity) 
  $entity->addRole('newcompanies'); 
  $entity->save();

我尝试在帐户设置 [admin/config/people/accounts] 页面中使用管理员角色,但无法正常工作。有什么想法吗?

【问题讨论】:

【参考方案1】:

在您的自定义模块中试试这个:

use Drupal\user\UserInterface;

function my_module_user_insert(UserInterface $user) 
    $rid = array_search('newcompanies', user_roles());

    $user->addRole($rid);
    $user->save();

说明:您必须连接到hook_ENTITY_TYPE_insert,然后为正在创建的用户添加所需的角色。请注意,您必须添加角色 id 而不是角色名称!

没试过,凭记忆写的,希望对你有帮助!

【讨论】:

以上是关于新用户注册时分配默认角色 - drupal 8的主要内容,如果未能解决你的问题,请参考以下文章

如何仅基于用户角色 Drupal 自定义 drupal 过滤器

Drupal 7 - Drupal 角色的有机组管理员

分配/删除不和谐角色

在 Drupal 7 中根据用户角色限制字段列表条目

在 Drupal 中更改有机组用户角色的用户规则?

Drupal 7所有角色的用户都需要可以从其他角色访问