Symfony FormType ChoiceType | Radio button valeur par défaut dans un FormType

Développeur web Front-End dans l'Oise - Gary Deshayes <--Translation

Crée le : dimanche 26 juillet 2020


Comment mettre une valeur par défaut à un groupe de radio button de type ChoiceType sous Symfony 4+ ?

Actuellement vous utilisez surement les formulaires de cette façon :

 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('choice', ChoiceType::class, [
             'label' => 'Choisir',
             'choices' => [
                  'Oui' => 2,
                  'Non' => 1,
                  "Ne sais pas" => 0
              ],
             'expanded' => true,
             'multiple' => false
     ]);
 }

Ce qui vous donne en résultat un groupe de 3 radios buttons avec un seul choix possible, mais si vous mettez directement ici une valeur par défaut, elle écrasera les valeurs de l'entité si vous souhaitez la modifier par la suite.

Définir par défaut une valeur dans le cas d'une création d'entité dans le FormType

Au lieu d'utiliser la méthode habituelle comme au dessus, utilisez cette méthode de la documentation officielle qui utilise les Events des formulaires :

public function buildForm(FormBuilderInterface $builder, array $options)
{
    // On modifie le formulaire avant de définir les datas
    $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
        //On récupère l'entité lié au formulaire
        $entity = $event->getData();
        $form = $event->getForm();

        $form->add('choice', ChoiceType::class, [
             'label' => 'Choisir',
             'choices' => [
                  'Oui' => 2,
                  'Non' => 1,
                  "Ne sais pas" => 0
              ],
             'expanded' => true,
             'multiple' => false
             //On définit ici la valeur par défaut
             //Si le choix existe on le mets sinon on mets à 0 (Ne sais pas)
             'data' => $entity->getChoice() ? $entity->getChoice() : 0
        ]);
    });
}

Elle permet de définir la bonne valeur en fonction de l'entité et donc de toujours garder en mémoire le formulaire en fonction de l'entité modifiée ou non.

 

Merci d'avoir lu, n'hésitez pas à partager !

Articles récents :
Symfony

Crée le : lundi 1 novembre 2021

Javascript Framework JS

Crée le : dimanche 31 octobre 2021

Symfony

Crée le : mercredi 1 septembre 2021

Javascript Framework JS

Crée le : samedi 28 novembre 2020

Javascript SQL Framework JS

Crée le : dimanche 20 septembre 2020

Symfony Bugs

Crée le : dimanche 26 janvier 2020