IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher une liste de valeur en fonction de la sélection d'un élement


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    septembre 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : septembre 2021
    Messages : 69
    Points : 29
    Points
    29
    Par défaut Afficher une liste de valeur en fonction de la sélection d'un élement
    Bonjour,

    J'ai une problématique sur un formulaire en Symfony que j'aimerais résoudre.

    Le formulaire comporte deux champs. Un champ catégorie qui va listé une liste de catégorie à choisir avec un choice_label. Un champ sous-catégorie qui va listé la liste des personnages d'un jeu.

    Nom : Capture.PNG
Affichages : 116
Taille : 9,2 Ko

    Le champ catégorie contient une valeur "Personnages". Ce que je veux, c'est afficher le champ sous-catégorie seulement si la valeur Personnages est affichée. Ce qui me donnera. Pour la catégorie Personnages, je choisis tel personnages sur le deuxième champ.

    Pour arriver à ce résultat j'ai testé l'addEventListener en PRE_SUBMIT du Formulaire d'évènement. Ce qui me donne quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
                    $sub = $event->getData();
                    $form = $event->getForm();
     
                    if (isset($sub['title']) && $sub['title'] == 'Personnages') {
                        $form->add('subCategory', EntityType::class, [
                            'class' => SubCategory::class,
                            'choice_label' => 'name']);
                    }
    Ce qui donne en gros : Si le champ catégorie contient la valeur Personnages, alors on ajoute la sous catégorie avec le nom des Personnages.

    Problème : Ça ne marche pas. Que je choisisse n'importe qu'elle catégorie, j'aurai toujours la liste des Personnages, ce que je ne veux pas.

    Si vous avez une idée je suis preneur, n'étant pas certain de la bonne méthode utilisée.

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    septembre 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : septembre 2021
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Je me permets de revenir sur la problématique. N'ayant pas trouvé de solution.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    septembre 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : septembre 2021
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    J'ai essayé avec l'event PRE SET DATA et PRE SUBMIT mais ca ne donne rien.

    Quand je fais quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
                    $data = $event->getData();
                    $form = $event->getForm();
     
                    if ( isset($data['category']) && $data['category'] == 2) {
     
                        $form->add('subCategory', EntityType::class, [
                            'class' => SubCategory::class,
                            'choice_label' => 'name',
                        ]);
                    }
     
                })
    Il ne se passe rien. La condition se traduit par : Si le champ category n'est pas vide et que ce champ a la valeur 2 (l'id qui fait référence à la catégorie Personnages) alors on affiche la liste des personnages sur un champ.

    Pareil pour PRE-SET-DATA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
     
                    $data = $event->getData();
                    $form = $event->getForm();            
     
                    if (!empty($data->getCategory()) && $data->getCategory() == 2) {
     
                        $form->add('subCategory', EntityType::class, [
                            'class' => SubCategory::class,
                            'choice_label' => 'name',
                        ]);
     
                    }
     
                })
    Je sais pas s'il faut ajouter de l'AJAX pour que ca fonctionne mais quand j'ai copié collé le code sur la doc Symfony ici le champ s'affichait bien.
    https://symfony.com/doc/5.4/form/dyn...nderlying-data

    Je pense donc pas qu'il faille obligatoirement passer par de l'AJAX.

    Peut être que je me trompe

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    septembre 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : septembre 2021
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    J'ai finalement gérer ca en JavaScript, même si ca me parait pas très propre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Afficher une liste de valeurs en fonction d'une valeur
    Par C0ngelat0r dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2019, 07h25
  2. Réponses: 0
    Dernier message: 06/06/2012, 10h26
  3. [WebI Xi3] Afficher une liste de valeur
    Par bonovice01 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/11/2011, 13h22
  4. [XL-2007] Rechercher et afficher une liste de valeurs
    Par abdel792 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/12/2010, 15h12
  5. Afficher une liste de valeurs ,même si elles n'existent pas
    Par Mindiell dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/02/2010, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo