
Création
Pour ajouter du contenu dans un Field Collection, nous allons utiliser la classe Drupal\field_collection\Entity\FieldCollectionItem :
$node = Node::load(1);
$fc = FieldCollectionItem::create(
['field_name' => 'field_bureau_de_vente']
);
$fc->set('field_adresse', "2 rue du lac");
$fc->set('field_horaires_d_ouverture', "de 18h à 20h");
$fc->setHostEntity($node);
$fc->save();
Dans cet exemple nous déclarons la clef field_name à la méthode create qui va correspondre au nom de notre field collection, ensuite nous enregistrons les valeurs de nos champs avec la methode set() puis la méthode setHostEntity va indiquer à Field Collection dans quel nœud nous allons les enregistrer.
/!\ Attention : la méthode setHostEntity($node) doit être placé avant la méthode save()
Mise a jours
Pour mettre à jours nos champs FC nous allons simplement charger notre FC à l'aide de la méthode load() avec comme paramètre la valeur du champs Field Collection présent dans notre nœud.
$fc = FieldCollectionItem::load($node->field_bureau_de_vente->value);
$fc->set('field_adresse', '10 rue du bois vert');
$fc->set('field_horaires_d_ouverture', 'de 13h à 14h');
$fc->save();
Suppression
$fc = FieldCollectionItem::load($node->field_bureau_de_vente->value);
$fc->delete();