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 :

[Symfony 2] Formulaire imbriqué + Check & combobox


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [Symfony 2] Formulaire imbriqué + Check & combobox
    Bonjour a tous,

    Je cherche a réaliser un formulaire imbriquée avec des checkbox, combobox et radio button

    Je m'explique lors ce que mon utilisateur remplit un formulaire il doit renseigner son adresse (physique) pour cela il a deux solution

    Soit sélectionner la société pour laquelle il travaille (les société sont listé dans une "combobox")

    Soit sélectionner une adresse perso (listé en Radio button)

    J'aimerai avoir une sorte de tableau a 2 colonnes avec un radio button de chaque coté

    A gauche adresse société avec en dessous la combobox des société

    a droite adresse perso et en dessous la liste de mes adresse perso

    Idéalement je voudrais que les champs de la colonne qui n'est pas sélectionnée soit en "désactivé"

    J'ai déjà tout les formulaires séparément je cherche une solution pour savoir comment imbriquer ça proprement et comment le traiter par la suite

    Merci d'avance!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    à priori tu gères des adresses entreprise et des adresses particulier, je suppose qu'il s'agit d'un héritage Doctrine.

    Tu pourrais créer un type de formulaire "AddressChoiceType"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class AdressChoiceType {
     
    public function buildForm(FormBuilder $builder, $options){
       $builder->add('choice_adress','choice',array('expanded'=>true,'choices'=>array('perso','entreprise'))
                  ->add('adressEntreprise','entity',array('class'=>'AdresseEntreprise'))
                  ->add('adressPerso','entity',array('class'=>'AddressPerso'));
     
        $transformer=new ChoiceAdressTransformer();
        $builder->addModelTransformer($transformer);
     }
    }
    associé à un DataTransformer.
    http://symfony.com/fr/doc/current/co...nsformers.html
    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
    16
    17
    18
    19
     
    class ChoiceAdressTransformer{
     
      //la méthode prend en argument un objet Adress $adress et doit renvoyer un tableau qui sera traité par le formType ci-dessus
      public function transform($adress){
            if($adress instanceof AdressPerso){
                $data=array('choice_adress'=>'perso','adressPerso'=>$adress);
            }elseif($adress instanceof EntrepriseAdress){
                 $data=array('choice_adress'=>'entreprise','adresseEntreprise'=>$adress);
            }
            return array();
      }
       //la manoeuvre inverse, prend un array comme argument et renvoit un objet Adress
      //selon que l'index 'choice_adress' est perso ou entreprise , on renvoit la valeur de l'un ou l'autre
      public function reverseTransform($dataForm){
     
      }
     
    }
    et dans ton formType de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $builder->add('adresseLivraison',new AdressChoiceType);//on suppose que la méthode setAdresseLivraison prend comme argument un objet Adress qu'il soit de type entreprise ou perso
    au niveau de twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //le bouton radio "adresse perso"
    {{form_row(form.adresseLivraison.choice_adress.perso)}}
    //la liste des adresse perso
    {{form_row(form.adresseLivraison.adressPerso)}}
     
    //le bouton radio "adresse entreprise"
    {{form_row(form.adresseLivraison.choice_adress.entreprise)}}
    //la liste des adresses entreprises
    {{form_row(form.adresseLivraison.adressEntreprise)}}
    pour la désactivation/activation, le plus simple sera de le faire en Javascript

Discussions similaires

  1. [2.x] [Symfony 2] Upload image dans formulaire imbriqué
    Par pixel016 dans le forum Symfony
    Réponses: 7
    Dernier message: 09/01/2015, 16h23
  2. [2.x] Symfony 2 : formulaires de collections imbriquées
    Par ben.IT dans le forum Symfony
    Réponses: 4
    Dernier message: 17/12/2014, 11h50
  3. Probleme Formulaire imbriques
    Par gloglo dans le forum Struts 1
    Réponses: 10
    Dernier message: 30/08/2006, 20h30
  4. formulaire imbriqué
    Par jani dans le forum Langage
    Réponses: 9
    Dernier message: 18/01/2006, 15h40
  5. [formulaire] filtrer par une combobox
    Par Marie D dans le forum Access
    Réponses: 8
    Dernier message: 19/09/2005, 15h14

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