public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('title')->add('images', 'collection', ['allow_add' => false, 'allow_delete' => false, 'type' => new ImageEdit()]); $referenceRepository = $this->referenceRepository; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($referenceRepository) { /** @var Subscription $subscription */ $subscription = $event->getData(); $imageReferences = $referenceRepository->findBy(['name' => 'file', 'type' => $subscription->getType()]); // On ajoute les références non présentes dans les subscriptions foreach ($imageReferences as $imageReference) { if ($subscription->getImages()->filter(function ($image) use($imageReference) { return $image->getReference()->getId() == $imageReference->getId(); })->isEmpty()) { $image = new Image(); $image->setReference($imageReference); $subscription->addImage($image); } } }); }