Невозможно получить сущность, используя события формы для CollectionType - PullRequest
0 голосов
/ 17 мая 2019

Невозможно получить сущность, используя FormEvent::getData() для FormEvents::PRE_SET_DATA, если элемент формы равен CollectionType:

class FooType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // some elements here
            ->add('bars', CollectionType::class, [
                'entry_type' => BarType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false,
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(
            [
                'data_class' => Foo::class,
                'allow_extra_fields' => true,
                'csrf_protection' => false,
            ]
        );
    }
}

class BarType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('address', Types\TextType::class)
        ;
        $builder->addEventListener(
            FormEvents::PRE_SET_DATA,
            function (FormEvent $event) {
                $data = $event->getData();
                // NULL is here
                dump($data);
                exit;
            }
        );
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(
            [
                'data_class' => Bar::class,
                'allow_extra_fields' => true,
                'csrf_protection' => false,
            ]
        );
    }
}

Если я добавлю кодовый блок addEventListener в FooType, сущность будет напечатана, как и ожидалось.Как я могу решить это?

...