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

Symfony PHP Discussion :

Récuperer valeur de mes checkbox


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    prevention incendie
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : prevention incendie

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut Récuperer valeur de mes checkbox
    bonjour la team,

    J'essaie de récupérer en Symfony les données d'un formulaire (qui n'a pas été généré par formBuilder car un peu complexe). il s'agit d'un formulaire de type checkbox :une fois coché et validé, quand je fait un dump de mon request, j'obtiens dans "parameters" un tableau du type *[ 20=>"1"...etc.... ] *(il s'agit de idProposition=>"idQuestion") ... en gros pour chaque proposition il y a une question (il s'agit d'un système de qcm dans lequel j'ai créé 2 entités : Question et Proposition avec une relation de type oneToMany)... en récupérant les données je souhaiterais injecter ces dernières dans une nouvelle table Reponse (du user). Comment construire la fonction dans le controller?

    Ici mon twig affichant le formulaire (partie propositions)

    Code Twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {% for proposition in question.propositions %}
                    <div class="form-group">
                        <input class="form-check-input" type="checkbox" value ="{{question.id}}" name="{{proposition.id}}"
                         >
                        <label class="form-check-label" for="{{proposition.id}}">{{proposition.choix}}</label>
                    </div>                   
                <br>
    {% endfor %}

    Comment parcourir cet array et collecter ses valeurs?

  2. #2
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Salut,

    Pourquoi ce passer de formBuilder? Utilise l'objet request de symfony tu le parcours avec un foreach(fait un dump avant pour voir l'arborescence de ton array)

  3. #3
    Membre averti
    Homme Profil pro
    prevention incendie
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : prevention incendie

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    Citation Envoyé par kevin254kl Voir le message
    Salut,

    Pourquoi ce passer de formBuilder? Utilise l'objet request de symfony tu le parcours avec un foreach(fait un dump avant pour voir l'arborescence de ton array)
    Car un peu complexe : en effet le qcm, qui est un grand formulaire, reprend les entités Question et Proposition (je ne sais pas faire un formBuilder reprenant 2 entités) et devrait à terme nourir une 3 eme entité (Reponse) . en faisant dump j'obtiens ce que j'ai cité plus haut : l'array suivant, [un chiffre correspondant à l'Id de la proposition =>"un chiffre correspondant )à l'id de la question à laquelle la proposition se refere"] mais aucune key

  4. #4
    Membre averti Avatar de eddst
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 23
    Par défaut
    Bonjour,

    Si j'ai bien compris tu aimerais récupérer toutes les valeurs du tableau "parameters"?

    La fonction php array_values() te permet de récupérer toutes les valeurs d'un tableau.

    Documentation Array_value()

  5. #5
    Membre averti
    Homme Profil pro
    prevention incendie
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : prevention incendie

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    Merci eddst, Je vais regarder ça

  6. #6
    Membre averti
    Homme Profil pro
    prevention incendie
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : prevention incendie

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    Bon finalement j'ai pu récuperer mes valeurs via l'objet request avec les methodes all() et key() pour récupérer respectivement valeurs et clés, de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $quest = $request->request->all();
    $prop = $request->request->keys();
    en gros quest est la liste de mes questions et prop sont les propositions à ces questions : en faisant un dump on a quelque chose comme :

    idQuest idProp
    1 19
    2 25
    2 27
    3 ...

    Maintenant je voudrait boucler pour nourrir une 3eme entité en bdd (Reponse) composé des champs idUser, idQuestion, idProposition, createdAt. Comment boucler sur ces 2 tables et faire des inserts?

  7. #7
    Membre averti
    Homme Profil pro
    prevention incendie
    Inscrit en
    Mai 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : prevention incendie

    Informations forums :
    Inscription : Mai 2019
    Messages : 27
    Par défaut
    Bon j'ai trouvé la solution . pour les prochaines générations voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function traitement(Request $request, ObjectManager $manager){
     
        $quest = $request->request->all();   
     
        foreach($quest as $prop=>$qst){
            $reponse= new Reponse();
            $reponse->setIdQuestion($qst);
            $reponse->setIdProposition($prop);
            $reponse->setCreatedAt(new \DateTime());
            $manager->persist($reponse);
            $manager->flush();
        }
    Voili voilou

Discussions similaires

  1. Récupérer les valeurs de mes checkbox créées dynamiquement
    Par new_dreams dans le forum Composants
    Réponses: 2
    Dernier message: 28/03/2013, 23h41
  2. [MySQL] récupérer valeurs de mes checkbox créé dynamiquement
    Par bullrot dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/06/2010, 10h33
  3. récuper valeur checkbox avec comme nom "xx[]"
    Par stevensf dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/10/2008, 14h57
  4. Récuperer valeurs d'une checkbox dans la base Mysql
    Par pod1978 dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 10/03/2006, 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