web-dev-qa-db-fra.com

Définir la valeur du champ Liste d'un nœud avec plusieurs valeurs

J'essaie de générer par programmation des nœuds d'un type de contenu personnalisé à partir d'un plugin de formulaire. Pour la plupart des domaines, je n'ai aucun problème. Par exemple, pour le champ de titre, je peux définir la valeur ainsi.

$node->title->value = t('My title');
$node->save();

Cependant, il existe également un champ de liste (texte) qui permet plusieurs valeurs. Et je ne sais pas comment procéder pour enregistrer des valeurs de champ avec plusieurs valeurs. Je suppose que si une seule valeur était autorisée, je pourrais le faire comme je l'ai défini dans l'exemple précédent, mais comment le traiter lorsque le champ est un tableau? Comme test, j'ai effectué une déclaration de die du champ sur un nœud qui avait déjà des valeurs dans ce champ pour voir à quoi il ressemble et cela a été généré:

Array ( [0] => Array ( [value] => test_3 ) [1] => Array ( [value] => test_4 ) ) 1

Mais je ne sais pas quoi faire avec ça. Comment définir la valeur de champ d'un champ de liste avec plusieurs valeurs autorisées?

2
Matt

Vous pouvez remplacer le contenu complet d'un champ en affectant un tableau:

$node->field_multivalue = [
  ['value' => '1'],
  ['value' => '2'],
  ['value' => '3'],
];

Si vous souhaitez ajouter une autre valeur au champ, vous pouvez utiliser le champ comme un tableau php:

$node->field_multivalue[] = ['value' => '4'];

Vous pouvez omettre la propriété principale d'un champ:

$node->field_multivalue[] = '5';

Vous avez maintenant 5 valeurs dans le champ.

8
4k4