Bonjour,
je poursuis mon apprentissage de Symfony et j'ai une nouvelle question.
J'ai une table appellée "Category" avec une colonne "parent_id". L'idée etant de repertorier toutes les catégories de mon site.
exemple

id | nom | parent_id
1 | categorie 1 | null
2 | categorie 2 | null
3 | sous-categorie 1 | 1

J'ai créé un formulaire pour créer ces catégories. Jusqu'ici, tout va bien. Le problème est que lorsque l'on sélectionne une catégorie, j'aimerais qu'une seconde liste déroulante apparaisse avec ses sous catégories.

 $builder
            ->add('name', TextType::class, array('label' => 'Nom de la catégorie : ')) 
            ->add('parent', EntityType::class, array(
                // looks for choices from this entity
                'class' => Category::class,
                 'required' => false,
                 'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('u')
                             ->where('u.parent IS NULL')
                            ->orderBy('u.name', 'ASC');
                    },
                 'label_format' => 'Catégorie parent',
                'choice_label' => 'name',
                 'placeholder' => 'Aucune',
                 'choice_value'  => 'id',
                 'empty_data' => null,
                'mapped'      => false,
            ))

             ->add('title', TextType::class, array('label' => 'Title SEO : ')) 
            ->add('metadescription', TextareaType::class, array(
            'label' => 'Description SEO : ',
            'attr' => array('class' => 'tinymce'),
            )) 
            ->add('submit', SubmitType::class, ['label'=>'Envoyer', 'attr'=>['class'=>'btn-primary btn-block']])
        ;

J'essaie de comprendre la doc: https://symfony.com/doc/current/form/dynamic_form_modification.html#form-events-submitted-data
mais clairement je bloque ! je ne comprend tout simplement pas comment cela fonctionne. Est-il possible de m'éclairer un peu et me guider dans la bonne direction svp ?

Merci

1 réponse


Guihom
Auteur
Réponse acceptée

Problème résolu. J'ai utilisé de l'Ajax "classique".