Comment créer un rôle par programme?

10

Comment créer un rôle par programme?

Qu'est-ce que je fais mal ici?

$role = \Drupal\user\Entity\Role::create(['id' => 'client', 'name' => 'Client']);
$role->save(); 
Jake Lacey
la source
Je mets à jour ma réponse ;-)
Adrian Cid Almaguer
@AdrianCidAlmaguer: Je modifierais ma réponse pour incorporer également ces commentaires de version PHP (5.6, 5.5.9, drupal 8, etc.) ... rendrait votre réponse plus facile à digérer. Mais bien sûr, c'est votre choix ...
Pierre.Vriens
@ Pierre.Vriens Si vous voulez modifier votre réponse, je ne sais pas quelle réponse, car ici il n'y en a qu'une, mais si vous voulez modifier ma réponse, allez-y.
Adrian Cid Almaguer

Réponses:

17

Le problème réside dans le changement de nom du tableau de données par étiquette :

$role = \Drupal\user\Entity\Role::create(array('id' => 'client', 'label' => 'Client'));
$role->save(); 

Ou vous pouvez utiliser:

//your data array
$data = array('id' => 'client', 'label' => 'Client');
//creating your role
$role = \Drupal\user\Entity\Role::create($data);
//saving your role
$role->save();
Adrian Cid Almaguer
la source
Merci beaucoup, je vais essayer ceci et vous le faire savoir. Hmm, je trouve assez étrange que Drupal 8 vous permette de renvoyer le tableau en tant que tel mais pas de les passer .... Peu importe encore d'apprendre les acclamations de Drupal 8 !!!
Jake Lacey
1
Adrian vient de séparer les lignes pour que les commentaires puissent vous montrer ce qui se passe @Jake, généralement le one-liner de votre question d'origine conviendrait
Clive
1
Oh j'ai mal compris, je n'ai pas vu la première révision de la réponse - @Jake, tant que vous utilisez> = php5.4, la syntaxe du tableau court fonctionnera (Drupal ne change pas le fonctionnement de php lui-même)
Clive
2
@Adrian Drupal 8 ne fonctionnera pas avec php <5.6;)
alexej_d
1
@JakeLacey un plaisir et bonne chance dans vos projets ;-)
Adrian Cid Almaguer