Как мне создать роль программно?

10

Как мне создать роль программно?

Что я здесь не так делаю?

$role = \Drupal\user\Entity\Role::create(['id' => 'client', 'name' => 'Client']);
$role->save(); 
Джейк Лейси
источник
Я обновляю свой ответ ;-)
Адриан Сид Альмагер
@AdrianCidAlmaguer: я бы отредактировал свой ответ, включив в него также эти комментарии к версии PHP (5.6, 5.5.9, drupal 8 и т. Д.) ... Было бы легче переварить ваш ответ. Но, конечно, это ваш выбор ...
Pierre.Vriens
@ Pierre.Vriens Если вы хотите отредактировать свой ответ, я не знаю, какой ответ, потому что здесь есть только один, но если вы хотите отредактировать мой ответ, продолжайте.
Адриан Сид Алмагер

Ответы:

17

Проблема в изменении имени массива данных по метке :

$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 8 позволяет вам возвращать массив как таковой, но не передавать их .... Не берите в голову, изучая приветствия Drupal 8 !!!
Джейк Лейси
1
Адриан только что отделил строки, чтобы в комментариях можно было увидеть, что происходит @Jake, обычно с одной строкой из исходного вопроса все будет в порядке
Клайв
1
О, я неправильно понял, не видел первую версию ответа - @Jake, пока вы используете> = php5.4, синтаксис короткого массива будет работать (Drupal не меняет работу самого php)
Clive
2
@Adrian Drupal 8 не будет работать с php <5.6;)
alexej_d
1
@JakeLacey удовольствие и удача в ваших проектах ;-)
Адриан Сид Алмагер