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 :

Formulaire avec plusieurs Objets


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Formulaire avec plusieurs Objets
    (Re)Bonjour,

    après avoir passé l'après midi à travailler sur Symfony et jonglé avec la doc, j'arrive un peu à saturation à cause d'un problème tout simple ...

    J'ai une table Disponibilité à laquelle on associe 0 à N Affectations.

    J'arrive à récupérer les Affectations liées à une Disponibilité, à les lister. Cependant, je voudrais à chaque Affectation associer un choix entre de boutons ratio pour modifier la valeur d'un attribut.
    J'ai crée un formulaire type "AffectationType" avec lequel j'ai réussi à afficher ce que je voulais pour UNE seule affectation.

    Voilà ce que je voudrais :
    _________________________________

    Affectation 1 : choix 1 O || choix 2 O
    _________________________________

    Affectation 2 : choix 1 O || choix 2 O
    _________________________________

    Affectation 3 : choix 1 O || choix 2 O
    _________________________________

    BOUTON_ENVOYER

    En temps normal, on passe au formulaire un objet (ici Affectation)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formulaireAffectation = $this->createForm(new AffectationType(), $uneAffectation)
    sauf que moi j'ai un tableau d'objets d'affectations, du coup je sais pas comment je dois m'y prendre, c'est tout bête en plus ...

    Merci par avance !

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    yooooooooooo maaaaaaaaaaaaaaaaaaaaaaan,


    as-tu pensé à faire une collection de AffectationType?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    merci pour votre réponse,

    j'ai créé un formulaire AffectationType() dans lequel j'ai l'attribut "statut"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
    	    ->add('statut','choice', array(
    					'choices' => array('Acceptee' => ' Accepter', 'Refusee' => ' Refuser '),
                        'expanded' => true,
                        'multiple' => false))
            ->add('commentaire','hidden');
        }
    Cela fonctionne pour une affectation, mais je voudrais que cela le fasse pour un ensemble d'objets Affectations que j'ai dans un tableau dans mon contrôleur ($tabAffectations)

    Je vais essayer de faire une collection avec les tutos en ligne, je vous tiens au courant.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Je n'arrive vraiment pas à utiliser l'exemple de l'email à cette page : http://symfony.com/fr/doc/current/re...ollection.html

    J'aurais bien besoin d'un coup de main :S

  5. #5
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ->add('mesAffectations', 'collection', array('type' => new AffectationType()));

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci, c'est super sympa de m'aider !

    J'y suis presque (mais j'ai encore un petit souci)

    Dans mon contrôleur j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            $form = $this->createFormBuilder($tabAffectations)
                ->add('tabAffectations', 'collection', array('type' => new AffectationType()));
    $tabAffectations étant un tableau d'objets Affectation qui provient d'une requête.

    Dans mon AffectationType() j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
    	    ->add('statut','choice', array(
    					'choices' => array('Acceptee' => ' Accepter', 'Refusee' => ' Refuser '),
                        'expanded' => true,
                        'multiple' => false))
            ->add('commentaire','hidden');
        }
    Dans ma vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {% for affectation in tabAffectations %}
    ...
     {{ form_widget(affectation.statut) }}
    ...
    Je ne sais pas vraiment ce que je dois mettre dans ma vue en fait, parce que là j'ai un vilain message d'erreur :

    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be an instance of Symfony\Component\Form\FormView, string given, called in /var/www/html/laguntzaile/app/cache/dev/twig/89/72/8f8399425dce7b08a512370d7d77bc97f723e9a8f7294651ddcafa2c5f2b.php on line 108 and defined") in laguntzaileBenevolesBundleefault:affectation.html.twig at line 35

    Je voudrais afficher pour chaque affectation du tour de la boucle for, son élément "statut" de AffectationType() (le commentaire serait à afficher uniquement si la case "Refuser" est cochée -> JS )

    Merci de votre aide en tous cas

  7. #7
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ form_widget(tabAffectations) }}
    ça donne quoi ?

  8. #8
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Contrôleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $formulaireAffectation = $this->createFormBuilder($tabAffectations)
                ->add('tabAffectations', 'collection', array('type' => new AffectationType()))
                ->getForm();
     
            $formulaireAffectation->handleRequest($requeteUtilisateur);
     
    ...
     
    return $this->render('...',array(
                ....
                'tabAffectations'=> $tabAffectations,
                'formulaireAffectation'=> $formulaireAffectation->createView() ...
    AffectationType.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
    	    ->add('statut','choice', array(
    					'choices' => array('Acceptee' => ' Accepter', 'Refusee' => ' Refuser '),
                        'expanded' => true,
                        'multiple' => false))
     
            ->add('commentaire','hidden');
        }
    Twig

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {% for affectation in tabAffectations %}
                        <tr>
                                <td>... </td>
                                <td> ... </td>
                                <td>
                                {{ form_widget(tabAffectations) }}
                                </td>
                        </tr>
    {% endfor %}
    J'obtiens

    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be an instance of Symfony\Component\Form\FormView, array given, called in /var/www/html/laguntzaile/app/cache/dev/twig/89/72/8f8399425dce7b08a512370d7d77bc97f723e9a8f7294651ddcafa2c5f2b.php on line 108 and defined") in laguntzaileBenevolesBundleefault:affectation.html.twig at line 35.

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {% for affectation in tabAffectations %}
                        <tr>
                                <td>... </td>
                                <td> ... </td>
                                <td>
     
                                        {{ form_widget(tabAffectations.statut) }}
     
                                </td>
                        </tr>
    {% endfor %}
    J'obtiens :

    Key "statut" for array with keys "0, 1, 2, 3" does not exist in laguntzaileBenevolesBundleefault:affectation.html.twig at line 35

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {% for affectation in tabAffectations %}
                        <tr>
                                <td>... </td>
                                <td> ... </td>
                                <td>
     
                                        {{ form_widget(formulaireAffectation.tabAffectations) }}
     
                                </td>
                        </tr>
    {% endfor %}
    Je n'ai pas d'erreur Symfony mais aucun champ. Dans le code source je peux voir seulement au premier tour de boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <td>
          <div id="form_tabAffectations"></div>
    </td>
    Et finalement, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {% for affectation in tabAffectations %}
                        <tr>
                                <td>... </td>
                                <td> ... </td>
                                <td>
     
                                        {{ form_widget(formulaireAffectation.tabAffectations.statut) }}
     
                                </td>
                        </tr>
    {% endfor %}


    J'obtiens :

    Method "statut" for object "Symfony\Component\Form\FormView" does not exist in laguntzaileBenevolesBundleefault:affectation.html.twig at line 35



    Voilà ... Je sens que je suis pas loin de la solution.

    Merci pour votre aide !

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    up svp

Discussions similaires

  1. [2.x] Formulaire avec plusieurs sélects pour un seul objet
    Par yamatoshi dans le forum Symfony
    Réponses: 1
    Dernier message: 22/11/2014, 17h17
  2. Réponses: 2
    Dernier message: 20/01/2014, 22h05
  3. formulaire avec plusieurs etapes
    Par dolf13 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 09h54
  4. Formulaire avec plusieurs submit !
    Par alfigor dans le forum Langage
    Réponses: 6
    Dernier message: 21/04/2006, 12h09
  5. Formulaire avec plusieurs submit -> Récupération
    Par masseur dans le forum Langage
    Réponses: 14
    Dernier message: 30/03/2006, 08h17

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