¿Cómo creo un rol mediante programación?

10

¿Cómo creo un rol mediante programación?

¿Qué estoy haciendo mal aquí?

$role = \Drupal\user\Entity\Role::create(['id' => 'client', 'name' => 'Client']);
$role->save(); 
Jake Lacey
fuente
Actualizo mi respuesta ;-)
Adrian Cid Almaguer
@AdrianCidAlmaguer: Editaría mi respuesta para incorporar también los comentarios de la versión de PHP (5.6, 5.5.9, drupal 8, etc.) ... Haría que su respuesta fuera más fácil de digerir. Pero, por supuesto, esa es tu elección ...
Pierre.Vriens
@ Pierre.Vriens Si desea editar su respuesta, no sé qué respuesta, porque aquí solo hay una, pero si desea editar mi respuesta, continúe.
Adrian Cid Almaguer

Respuestas:

17

El problema está en el nombre de cambio de matriz de datos por etiqueta :

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

O puedes usar:

//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
fuente
Muchas gracias, lo intentaré y te lo haré saber. Hmm, me parece bastante extraño que Drupal 8 te permita devolver la matriz como tal, pero no pasarlos ... ¡¡¡No importa seguir aprendiendo Drupal 8!
Jake Lacey
1
Adrian acaba de separar las líneas para que los comentarios puedan mostrarte lo que está sucediendo en @Jake, por lo general, el comentario de tu pregunta original estaría bien
Clive
1
Oh, entendí mal, no vi la primera revisión de la respuesta: @Jake, siempre que esté usando> = php5.4, la sintaxis de matriz corta funcionará (Drupal no cambia la forma en que funciona php)
Clive
2
@Adrian Drupal 8 no funcionará con php <5.6;)
alexej_d
1
@JakeLacey un placer y buena suerte en sus proyectos ;-)
Adrian Cid Almaguer