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();