Я хотел бы использовать сервис в моей форме 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
встроенная форма?
Вам нужно пометить сервис как форму:
services:
form_type_child:
class: IndexBundle\Form\Type\ChildType
arguments:
- @doctrine.orm.entity_manager
tags:
- { name: form.type }
Надеюсь это поможет
Других решений пока нет …