Wie erstelle ich programmgesteuert eine Rolle?


10

Wie erstelle ich programmgesteuert eine Rolle?

Was mache ich hier falsch?

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

Ich aktualisiere meine Antwort ;-)
— Adrian Cid Almaguer

@AdrianCidAlmaguer: Ich würde meine Antwort bearbeiten, um auch diese Kommentare zur PHP-Version aufzunehmen (5.6, 5.5.9, Drupal 8 usw.) ... Würde Ihre Antwort leichter verdaulich machen. Aber natürlich ist das Ihre Wahl ...
— Pierre.Vriens

@ Pierre.Vriens Wenn Sie Ihre Antwort bearbeiten möchten, weiß ich nicht, welche Antwort, da es hier nur eine gibt, aber wenn Sie meine Antwort bearbeiten möchten, fahren Sie fort.
— Adrian Cid Almaguer

Antworten:


17

Das Problem liegt im Datenarray, das den Namen nach Bezeichnung ändert :

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

Oder Sie können verwenden:

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

Vielen Dank, ich werde es versuchen und Sie wissen lassen. Hmm, ich finde es ziemlich seltsam, dass Sie mit Drupal 8 das Array als solches zurückgeben, aber nicht weitergeben können.
— Jake Lacey

1
Adrian hat gerade die Zeilen getrennt, damit die Kommentare Ihnen zeigen können, was bei @Jake los ist. Normalerweise ist der Einzeiler aus Ihrer ursprünglichen Frage in Ordnung
— Clive

1
Oh, ich habe es falsch verstanden und die erste Überarbeitung der Antwort nicht gesehen - @Jake, solange Sie> = php5.4 verwenden, funktioniert die Syntax des kurzen Arrays (Drupal ändert nicht, wie PHP selbst funktioniert)
— Clive

2
@Adrian Drupal 8 funktioniert nicht mit PHP <5.6;)
— alexej_d

1
@ JakeLacey eine Freude und viel Glück in Ihren Projekten ;-)
— Adrian Cid Almaguer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.