Как программно создать роль в Drupal 8?
Как мне программно создать роль в Drupal 8?
Что я здесь не так делаю?
$role = \Drupal\user\Entity\Role::create(['id' => 'client', 'name' => 'Client']);
$role->save();
2 ответа
Решение
Проблема заключается в изменении имени массива данных по метке:
$role = \Drupal\user\Entity\Role::create(array('id' => 'client', 'label' => 'Client'));
$role->save();
Или вы можете использовать:
//your data array
$data = array('id' => 'client', 'label' => 'Client');
//creating your role
$role = \Drupal\user\Entity\Role::create($data);
//saving your role
$role->save();
В моем случае я хотел иметь возможность автоматически создавать несколько ролей («клиенты», «менеджеры», «торговые представители») для работы с моим пользовательским модулем.
Вот как я программно автоматически создаю роли в Drupal 9.
мой пользовательский модуль/mycustommodule.module
use Drupal\user\Entity\Role;
function mycustommodule_install() {
//Get all available roles
$get_all_roles=Role::loadMultiple();
//these are the required roles
$required_roles=array("clients","managers","salesrep");
//check if is not already created , create each role
foreach($required_roles as $the_role){
if(!isset($get_all_roles[$the_role])){
$role = Role::create(array('id' => $the_role, 'label' => ucwords($the_role)));
$role->save();
}
}
//
}
Протестировано на Drupal версии 9.4.2