Come posso creare un ruolo a livello di codice?


10

Come posso creare un ruolo a livello di codice?

Cosa sto facendo di sbagliato qui?

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

Aggiornamento la mia risposta ;-)
Adrian Cid Almaguer il

@AdrianCidAlmaguer: Modificherei la mia risposta per incorporare anche quei commenti sulla versione di PHP (5.6, 5.5.9, drupal 8, ecc.) ... Renderebbe la tua risposta più facile da digerire. Ma ovviamente, questa è la tua scelta ...
Pierre.Vriens,

@ Pierre.Vriens Se vuoi modificare la tua risposta, non so quale risposta, perché qui ce n'è solo una, ma se vuoi modificare la mia risposta vai avanti.
Adrian Cid Almaguer,

Risposte:


17

Il problema è nella modifica del nome dell'array di dati per etichetta :

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

Oppure puoi usare:

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

Grazie mille, proverò questo e ti farò sapere. Hmm Trovo abbastanza strano che Drupal 8 ti permetta di restituire l'array in quanto tale, ma non di passarli .... Non importa ancora di imparare applausi di Drupal 8 !!!
Jake Lacey,

1
Adrian ha appena separato le righe in modo che i commenti possano mostrarti cosa sta succedendo @Jake, di solito il one-liner della tua domanda originale andrebbe bene
Clive

1
Oh, ho frainteso, non ho visto la prima revisione della risposta - @Jake, fintanto che stai usando> = php5.4 la sintassi dell'array breve funzionerà (Drupal non cambia il modo in cui funziona php stesso)
Clive

2
@Adrian Drupal 8 non funzionerà con php <5.6;)
alexej_d

1
@JakeLacey un piacere e buona fortuna per i tuoi progetti ;-)
Adrian Cid Almaguer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.