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 :

Form, ChoiceType, preferred_choices [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 111
    Points
    111
    Par défaut Form, ChoiceType, preferred_choices
    Bonjour;

    Comment faire pour sélectionner un choix par défaut dans une liste de type: ChoiceType

    Quand je fais:


    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
     
     
        public function buildForm(FormBuilder $builder, array $options)
        {
              $ builder-> add ('test', 'choice', array (
                  'choices' => array (
                      '1 '=>' test1 ',
                      '2 '=>' test2 ',
                      '3 '=>' test3 ',
                      '4 '=>' test4 ',
                      '5 '=>' test5 '
                  ),
                  'preferred_choices ' => array (
                      '5' => 'test5'
                  )
                  ));
    J'ai toujours la liste:
    test1
    test2
    test3
    test4
    test5

    Merci d'avance.

  2. #2
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Salut,

    La doc à ce sujet sur le site de Symfony est un peu erronée. Il suffit de donner les array_keys pour le preferred choice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function buildForm(FormBuilder $builder, array $options)
        {
              $ builder-> add ('test ', 'choix', array (
                  'choices' => array (
                      '1 '=>' test1 ',
                      '2 '=>' test2 ',
                      '3 '=>' test3 ',
                      '4 '=>' test4 ',
                      '5 '=>' test5 '
                  ),
                  'preferred_choices ' => array (4,5)
                  ));
        }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    L'option 'preferred_choices' semble servir à mettre des options devant les autres ; en séparent les choix préférés des autres par une ligne.... donc ce n'est pas ça.

    Pour mettre des infos par défaut, il faut qui tu utilises la fonction "setData" pour assigner l'entité qui correspond à ton formulaire dans laquelle tu peux placer des valeurs par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->setData(new ContactForm());
    Et ContactForm sera une classe toute bete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ContactForm { 
     
        public $email = 'toto@toto.com';
     
        public function setEmail($email){
            $this->email = $email;
        }
     
        public function getEmail(){
            return $this->email;
        }    
    }
    En espérant avoir répondu à ta question.

    Edit:
    @cwx : je me trompe ou tu es "dot-i-fy" sur github? comme on se retrouve!
    Un petit si la réponse convient. Merci.

  4. #4
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    En effet oui, j'avais mal lu la question, mais je suis pardonné vu que mtnt vous savez pour le preferred_choices

    @RapotOr: oui tout à fait !

    @RapotOr: en farfouillant un peu le code source, je vois pas de méthodes prévues pour mettre une option défautlt, même dans la classe parent Field ???
    Il y a bien une méthode setData mais cela ne s'affiche pas dans le formulaire avant l'envoi, enfin pour l'instant ...j'investigues...

  5. #5
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Bon après plusieurs tests, j'en ressorts que :

    J'ai du vider le cache du navigateur pendant les tests plusieurs fois

    Il y a trois facons d'établir une valeur par défaut :

    1. Celle évoquée par rapotOr (qui est celle suggérée par Symfony, j'y reviendrai un peu plus loin)

    2-3 : pendant la construction du formulaire :

    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
     
    public function buildForm(FormBuilder $builder, array $options)
        {
              $builder->add ('test ', 'choix', array (
                  'choices' => array (
                      '1 '=>' test1 ',
                      '2 '=>' test2 ',
                      '3 '=>' test3 ',
                      '4 '=>' test4 ',
                      '5 '=>' test5 '
                  ),
                  // Première méthode, directement dans la méthode add
                  'data' =>array(2)
     
     
                  // Deuxième méthode en appelant le builder par après :
                $builder->get('choix')->setData(array(2));
    }
    Pour ma part, je trouve que le nom de méthode add n'est pas très explicite par rapport à l'utilité de la méthode..menfin

    cfr. doc Symfony :
    you should rather the default value of the token property in your domain object.
    Voir un exemple ici avec une valeur par défaut pour la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function newAction()
        {
     
            $note = new Note();
            $note->setBody('Hello World');
            $note->setChoix(array(3));
            $note->setDuedate(new \dateTime());
            $form = $this->get('form.factory')->create(new NoteForm(), $note);
     
            return $this->render('DIFNotesBundle:Default:new.html.twig', array(
                'form' => $form->createView(),
            ));
        }

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 111
    Points
    111
    Par défaut
    Merci pour vos réponses.
    Je vais tester ça.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 111
    Points
    111
    Par défaut
    Juste pour la deuxième méthode proposée par creativecwx:

    // Deuxième méthode en appelant le builder par après :
    $builder->get('choix')->setData(array(2));
    Je pense que si on récupère le champ ($builder->get('champName')), c'est pas la peine de passer un tableau des valeurs dans setData.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $builder->get('test')->setData('2');

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

Discussions similaires

  1. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  2. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  5. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49

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