Symfony2 — определить форму типа коллекции как сервис

Я хотел бы использовать сервис в моей форме PRE_SET_DATA слушатель событий. Теперь эта форма встроена в другой тип формы как CollectionType,

class ChildType extends AbstractType
{
private $entitymanager;

public function __construct(EntityManager $entitymanager)
{
$this->entityManager = $entitymanager;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
...

// Add listeners
$builder->addEventListener(FormEvents::PRE_SET_DATA, array($this, 'onPreSetData'));
}

public function onPreSetData(FormEvent $event)
{
$form = $event->getForm();

...

$this->entityManager->flush();
}

...
}

Чтобы внедрить сервис менеджера сущностей, я определил тип формы как сервис:

services:
form_type_child:
class: IndexBundle\Form\Type\ChildType
arguments:
- @doctrine.orm.entity_manager

И теперь я должен использовать эту форму как CollectionType:

class ParentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('child', CollectionType::class, array(
'type' => ChildType::class,
'by_reference' => false,
'required' => false
))
->add('submit', SubmitType::class);
}
}

Теперь я получаю эту ошибку:

Исправляемая фатальная ошибка: аргумент 1 передан
IndexBundle \ Form \ Тип \ ChildType :: __ конструкт ()
должен быть примером
Doctrine \ ORM \ EntityManager, не заданный, называется
в
C: \ XAMPP \ HTDOCS \ trainingexperience_symfony \ поставщика \ Symfony \ Symfony \ SRC \ Symfony \ Component \ Form \ FormRegistry.php
на строке 90 и определил

Любые идеи, как я могу передать лицо менеджера в CollectionType встроенная форма?

2

Решение

Вам нужно пометить сервис как форму:

services:
form_type_child:
class: IndexBundle\Form\Type\ChildType
arguments:
- @doctrine.orm.entity_manager
tags:
- { name: form.type }

Надеюсь это поможет

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]