У меня есть два объекта. Объект A является родителем Entity B. Я создаю REST для сущности A, которая содержит объект B в качестве дочерних элементов.Symfony2 Child Form Events Размножение
class EntityA {
private $name;
private $type;
private $bs;
}
class EntityB {
private $entityA;
private $color;
}
Я в принципе сделать пост/ставить что-то вроде:
{ "name": "anamehere", "type": "atypehere", "bs": [{"color": "blue"}] }
Для важной части, форма Entity А выглядит примерно так:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('type', TextType::class)
->add('bs', CollectionType::class, array(
'entry_type' => EntityB::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
));
$builder->addEventListener(FormEvents::SUBMIT, array($this, 'onSubmitData'));
}
public function onSubmitData(FormEvent $event) {
// Do Something
}
И мой Entity Форма B выглядит примерно так:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('color', TextType::class);
$builder->addEventListener(FormEvents::SUBMIT, array($this, 'onSubmitData'));
}
public function onSubmitData(FormEvent $event) {
// Do Something else
}
Проблема, с которой я столкнулась, заключается в том, что когда я делаю это POST/PUT, событие формы B в onSubmitData не вызывается. Как я могу передать событие из формы EntityA в форму EntityB. Он работает должным образом в EntityAType
Как насчет присоединения слушателя к событию 'POST_SUBMIT ', но не ко всей области, а к полю bs в форме Entity A? –
@ PawełMikołajczuk Это может сработать, но я искал более общее решение .. потому что представьте, что форма bs имеет дочерние формы сама .. или что форма bs используется во многих местах. Я пытаюсь избежать повторения. также мне пришлось бы определять функции в EntityAType, поэтому, если в другой форме используется «bs», мне пришлось бы повторять функции –
. Я получаю вашу точку зрения, но не могу найти нигде информацию, если событие «Отправить» заполнено для встроенных форм; Похоже, это не так, но я не уверен на 100%. –