Como crio uma função programaticamente?

10

Como crio uma função programaticamente?

O que eu estou fazendo errado aqui?

$role = \Drupal\user\Entity\Role::create(['id' => 'client', 'name' => 'Client']);
$role->save(); 
Jake Lacey
fonte
Eu atualizo a minha resposta ;-) #
Adrian Cid Almaguer
@AdrianCidAlmaguer: Gostaria de editar minha resposta para incorporar também os comentários da versão PHP (5.6, 5.5.9, drupal 8, etc) ... Tornaria sua resposta muito mais fácil de digerir. Mas é claro, essa é a sua escolha ...
Pierre.Vriens
@ Pierre.Vriens Se você quiser editar sua resposta, não sei qual resposta, porque aqui existe apenas uma, mas se você quiser editar minha resposta, vá em frente.
Adrian Cid Almaguer

Respostas:

17

O problema está no nome da alteração da matriz de dados por rótulo :

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

Ou você pode 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
fonte
Muito obrigado, vou tentar isso e que você saiba. Hmm, acho bastante estranho que o Drupal 8 permita que você retorne o array como tal, mas não os passe ... Não importa ainda aprender os aplausos do Drupal 8 !!!
Jake Lacey
11
Adrian acabou de separar as linhas para que os comentários possam mostrar o que está acontecendo @ Jake, normalmente o comentário da sua pergunta original ficaria bem
Clive
11
Ah, eu entendi errado, não vi a primeira revisão da resposta - @ Jake, desde que você esteja usando> = php5.4, a sintaxe do array curto funcionará (Drupal não muda o funcionamento do php)
Clive
2
@Adrian Drupal 8 não vai funcionar com o PHP <5.6;)
alexej_d
11
@JakeLacey um prazer e boa sorte em seus projetos ;-)
Adrian Cid Almaguer