Symfony 4.3: динамическое управление формами - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь реализовать динамическую форму с Symfony 4.3 на основе официальной документации.

Для упрощения у меня есть 3 сущности: продукт, категория и подкатегория, связанные друг с другом отношениями OneToMany, следующим образом:категория может иметь несколько подкатегорий, а подкатегория может иметь несколько продуктов. При выборе категории (например, спорт) я хотел, чтобы список спортивных подкатегорий отображался в следующем поле.

class ProductType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('nom')
        ->add('categorie', EntityType::class, [
            'class'       => 'App\Entity\Categorie',
            //'placeholder' => '',
        ])
    ;



    $formModifier = function (FormInterface $form, Categorie $categorie = null) {
        $subcategories = null === $categorie ? [] : $categorie->getSubcategories();
        //var_dump($subcategories);
        $form->add('subcategorie', EntityType::class, [
            'class' => 'App\Entity\Subcategorie',
            //'placeholder' => '',
            'choices' => $subcategories,
        ]);
    };

    $builder->addEventListener(
        FormEvents::PRE_SET_DATA,
        function (FormEvent $event) use ($formModifier) {
            // this would be your entity
            $data = $event->getData();
            //var_dump($data);
            //die;
            $formModifier($event->getForm(), $data->getCategorie());
        }
    );

    $builder->get('categorie')->addEventListener(
        FormEvents::POST_SUBMIT,
        function (FormEvent $event) use ($formModifier) {
            $categorie = $event->getForm()->getData();

            $formModifier($event->getForm()->getParent(), $categorie);
        }
    );
//...
}

Меня беспокоит то, что я не могу получить значение своих дампов ($data и $ subcategories): они всегда равны NULL. Поэтому я не могу найти свои подкатегории в форме.

Я спрашиваю, потому что я действительно заблокирован на некоторое время, и я не могу найти ошибку в этом коде на основе документации Symfony.

...