"Main menu", 'class' => PrimaryNavItems::cl" /> "Main menu", 'class' => PrimaryNavItems::cl" /> "Main menu", 'class' => PrimaryNavItems::cl"/>

With Symfony form, how to change ChoiceType values according to another value?

40 Views Asked by At

With Symfony 7, i have a form. Here a part of this form :

            ->add('primary', EntityType::class, [
                "label" => "Main menu",
                'class' => PrimaryNavItems::class,
                'choice_label' => 'title',
                "mapped" => false,
            ])
            ->add('parent_nav', EntityType::class, [
                "label" => "Item",
                'class' => SecondaryNavItems::class,
                'choice_label' => 'title',
            ])

I want to display parent_nav values (dynamicaly) according to the primary value selected. This is possible ?

I already have a relation in MySQL between PrimaryNavItems and SecondaryNavItems.

Ive tried with :

        $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
        $form = $event->getForm();
        $data = $event->getData();

        $primary = $data['primary'] ?? null;

        dd($primary);
    });

But nothing appends when i change my primary value.

and with this way :

        $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
        $form = $event->getForm();
        $data = $event->getData();

        $primary = $data['primary'] ?? null;

        dd($primary);
    });

give to me the right value.

1

There are 1 best solutions below

0
pHoutved On

You should try

$primary = $event->getForm()->get('primary')->getData();