I would say, instead of creating collection entity types, you need to create your own type.
namespace AppBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Doctrine\ORM\EntityManager; class ItemEntityType extends AbstractType { protected $em; public function __construct(EntityManager $em) { $this->em = $em } public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addModelTransformer(new ItemToNumberTransformer($this->em)); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'class' => 'AppBundle:Item', 'property' => 'name', 'label' => 'Item', )); } public function getParent() { return 'entity'; } public function getName() { return 'appbundle_item_entity'; } }
Then define it as a service
application /Config/services.yml
services: form.type.model.item_entity: class: AppBundle\Form\Type\ItemEntityType arguments: ["@doctrine.orm.entity_manager"] tags: - {name: form.type, alias: appbundle_item_entity}
And now you can specify this as the type of your collection
$builder ->create('items', 'collection', array( 'type' => 'appbundle_item_entity' 'label' => 'Items', 'allow_add' => true, 'allow_delete' => true, 'delete_empty' => true, 'prototype' => true, 'required' => false, ))
Disclosure: I have not tested this, but it should work.
source share