Brave publisher PUBLISHER
Développeur web Front-End dans l'Oise - Gary Deshayes

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 5 | Retourner une image via une route d'un controller

Symfony

Crée le : mercredi 1 septembre 2021

VueJS 3, ExpressJS 4.17 | Upload et redimensionnement d'une image

Javascript Framework JS

Crée le : samedi 28 novembre 2020

Symfony Event Subscriber | Restriction d'une plage ip avec un Event Subscriber

Symfony

Crée le : samedi 14 novembre 2020

Angular, ExpressJS | Authentification JWT avec Angular 10 et ExpressJS 4 (MySQL)

Javascript SQL Framework JS

Crée le : dimanche 20 septembre 2020

Symfony, Excel, CSV | Générer un fichier CSV pour Excel avec Symfony

Symfony

Crée le : jeudi 6 août 2020

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

Symfony

Crée le : dimanche 26 juillet 2020

Doctrine, Symfony | Différence entre deux dates sous MySQL (Jour, mois, années...)

Symfony SQL

Crée le : jeudi 18 juin 2020

JavaScript, jQuery et Regex | Sécuriser un mot de passe en temps réel avec JS

Javascript jQuery

Crée le : lundi 23 mars 2020

Symfony, Doctrine | Récupérer les anciennes données d'un formulaire FormType

Symfony

Crée le : vendredi 14 février 2020

jQuery, Webpack et Symfony | Appeler jQuery dans vos fichiers twig

Symfony Bugs

Crée le : dimanche 26 janvier 2020