Dans ton cas, voilà comment je procède : - tableau avec les choix (si ça ne provient pas de la base) avec parfois une classe qui gère cela.
- widget avec paramètre array('' => '') + tableau des choix - validator avec un array_flip(tableau des choix) (ou la fonction qui inverse les clés et les valeurs si ce n'est pas celle-là) - option required => true pour le validator si la donnée est obligatoire Ainsi, si le champ est obligatoire, il apparaît d'abord vide et force l'utilisateur à faire son choix car sinon il a une erreur (required). -----Message d'origine----- De : symfony-fr@googlegroups.com [mailto:symfony...@googlegroups.com] De la part de Tugdual SAUNIER Envoyé : mercredi 5 janvier 2011 23:52 À : symfony-fr@googlegroups.com Objet : Re: [symfony-fr] validator liste déroulante désolé mauvais copié/coller, je voulais parler du widget ;) --- Tugdual Saunier tugdual.saun...@gmail.com GTalk: tucks...@gmail.com skype: tucksaun ---------------------------------- Pensez environnement ! N'imprimez cet mail que si c'est vraiment nécessaire Le 5 janvier 2011 23:42, manuel brossard <mbross...@infonel.net> a écrit : > Généré par > > 500 | Internal Server Error | InvalidArgumentException > > sfValidatorChoice does not support the following options: 'add_empty'. > > Le 5 janvier 2011 23:41, manuel brossard <mbross...@infonel.net> a écrit : >> >> Bien tenté, j 'ai une erreur 500 ! >> >> Le 5 janvier 2011 23:34, Tugdual SAUNIER <tugdual.saun...@gmail.com> >> a écrit : >>> >>> essaye ça : >>> 'socialrelation' => new >>> sfValidatorChoice(array('add_empty'=>'Choisissez' ,'choices' => >>> self::$liensocial)), et rajoute 'required'=>true au validateur en >>> virant 0 => 'Choisissez' de self::$liensocial >>> >>> --- >>> Tugdual Saunier >>> tugdual.saun...@gmail.com >>> >>> Le 5 janvier 2011 19:47, manuel brossard <mbross...@infonel.net> a >>> écrit >>> : >>> > >>> > >>> > >>> > 'socialrelation' => new sfValidatorChoice(array('choices' => >>> > self::$liensocial)), >>> > >>> > >>> > ESt impossible à valider.. >>> > >>> > OU trouver une doc intelligible sur les widgets >>> > >>> > >>> > Valider un choix dans une liste exemple : >>> > >>> > J' ai une liste de département dans un formulaire je veux que l' >>> > utilisateur sélectionne son département et ne laisse pas la >>> > première valeur (ain ou vide. ) juste parce qu' il a oublié. >>> > >>> > C 'est de l' ultra classique ! mais bon ça doit être trop simple.. >>> > >>> > En fait quand c' est déjà codé c 'est bien d' avoir la doc >>> > exhaustif sinon j' ai juste l' enfer. ET symfony devient une cacophonie ! >>> > >>> > >>> > Le 5 janvier 2011 15:36, manuel brossard <mbross...@infonel.net> a >>> > écrit : >>> >> >>> >> Ben non .. >>> >> >>> >> >>> >> et si j' ajoute pas la valeur nulle dans le widget la liste >>> >> contient les valeurs possibles et donc c 'est encore car en cas >>> >> d' oubli c "est le premier choix de la liste qui sera enregistré. >>> >> >>> >> >>> >> >>> >> Le 5 janvier 2011 14:49, Lélio ML <mailing-l...@lelio.fr> a écrit : >>> >>> >>> >>> Le required => true devrait fonctionner. >>> >>> >>> >>> Sinon, dans l'option choices du sfValidatorFormChoice, il ne >>> >>> faut pas que la chaine vide '' soit présente. >>> >>> >>> >>> -----Message d'origine----- >>> >>> De : symfony-fr@googlegroups.com >>> >>> [mailto:symfony...@googlegroups.com] >>> >>> De la >>> >>> part de manuel brossard >>> >>> Envoyé : mercredi 5 janvier 2011 14:41 À : >>> >>> symfony-fr@googlegroups.com Objet : Re: [symfony-fr] validator >>> >>> liste déroulante >>> >>> >>> >>> Ben si le premier élément est 'choisissez" le can_be_empty >>> >>> =>false ne marchera pas, et le champs est forcement requis >>> >>> puisque c' est une liste déroulante. >>> >>> >>> >>> Cela fonctionnera qu' avec premier élément vide. >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> Le 5 janvier 2011 14:33, ASSO Anthony <anthony.a...@gmail.com> a >>> >>> écrit : >>> >>> >>> >>> >>> >>> Rajoute l'option: can_be_empty =>false ou required=>true >>> >>> selon ton utilisation. >>> >>> >>> >>> >>> >>> >>> >>> 2011/1/5 manuel brossard <mbross...@infonel.net>: >>> >>> > Oui j' ai plus d' erreur mais la validation est >>> >>> toujours bonne même si il >>> >>> > n' y a pas eu de choix. >>> >>> > >>> >>> > L' idée c' est d 'obliger à faire un choix autre que le >>> >>> premier de la liste >>> >>> > (champs vide ou indicatif.. ) >>> >>> > >>> >>> > >>> >>> > Le 5 janvier 2011 13:07, mohamed elharouachi >>> >>> <elharoua...@gmail.com> a écrit >>> >>> > : >>> >>> >> >>> >>> >> 'socialrelation' => new sfValidatorChoice(array('choices' >>> >>> => >>> >>> >> array_keys(self::$liensocial))), >>> >>> >> >>> >>> >> Le 5 janvier 2011 12:06, ASSO Anthony >>> >>> <anthony.a...@gmail.com> a écrit : >>> >>> >>> >>> >>> >>> essaye ca: >>> >>> >>> >>> >>> >>> new sfValidatorChoice(array( >>> >>> >>> 'choices' => array_keys(self::$liensocial) >>> >>> >>> )); >>> >>> >>> >>> >>> >>> 2011/1/5 manuel brossard <mbross...@infonel.net>: >>> >>> >>> > 'socialrelation' => new >>> >>> >>> > >>> >>> sfValidatorString(array(array_keys(self::$liensocial))), >>> >>> >>> > >>> >>> >>> > >>> >>> >>> > génère une erreur 500. >>> >>> >>> > >>> >>> >>> > >>> >>> >>> > >>> >>> >>> > Le 5 janvier 2011 08:42, ASSO Anthony >>> >>> <anthony.a...@gmail.com> a écrit >>> >>> >>> > : >>> >>> >>> >> >>> >>> >>> >> Bonjour, >>> >>> >>> >> >>> >>> >>> >> pour ton premier pb: >>> >>> >>> >> >>> >>> >>> >> Dans le validator, il faut mettre >>> >>> >>> >> array(array_keys(self::$liensocial))) en premier >>> >>> argument. il >>> >>> >>> >> t'obligera donc à avoir une element de ta liste. >>> >>> >>> >> >>> >>> >>> >> Dans le deuxième argument, tu personnalises ton >>> >>> messsage ou en faisant >>> >>> >>> >> un setMessage() après la déclaration du validator >>> >>> >>> >> >>> >>> >>> >> Bonne journée. >>> >>> >>> >> >>> >>> >>> >> 2011/1/4 mantex <m...@infonel.net>: >>> >>> >>> >> > Bonsoir, >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> > J ' essai de gérer utiliser le validator >>> >>> sfValidatorString pour >>> >>> >>> >> > obliger le choix parmi une liste déroulante. >>> >>> >>> >> > >>> >>> >>> >> > Voici un extrait de ma classe: >>> >>> >>> >> > >>> >>> >>> >> > protected static >>> >>> >>> >> > $liensocial = array(0 => 'Choisissez', 1 => >>> >>> 'Hierarchie', 2 => >>> >>> >>> >> > 'Pair', >>> >>> >>> >> > 3 => 'Collaborateur', 4 =>'Exterieur'); >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> > $this->widgetSchema['socialrelation'] = new >>> >>> sfWidgetFormSelect >>> >>> >>> >> > (array('choices' => self::$liensocial)); >>> >>> >>> >> > >>> >>> >>> >> > 'socialrelation' => new >>> >>> sfValidatorString(array('min_length' => >>> >>> >>> >> > 1)), >>> >>> >>> >> > >>> >>> >>> >> > Mais cela ne fait pas le job , je n' ai d' >>> >>> ailleurs pas trouvé >>> >>> >>> >> > comment >>> >>> >>> >> > personnalisé le message en remplacement 'champ >>> >>> is too short' dans le >>> >>> >>> >> > cas ou la condition n' est pas remplie. >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> > -- >>> >>> >>> >> > Vous recevez ce message, car vous êtes abonné au >>> >>> groupe Google >>> >>> >>> >> > Groupes Symfony-fr. >>> >>> >>> >> > Pour envoyer un message à ce groupe, adressez un >>> >>> e-mail >>> >>> >>> >> > à symfony...@googlegroups.com. >>> >>> >>> >> > Pour vous désabonner de ce groupe, envoyez un >>> >>> e-mail à l'adresse >>> >>> >>> >> > symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> >>> >> > Pour plus d'options, consultez la page de ce groupe : >>> >>> >>> >> > http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >> > >>> >>> >>> >> > >>> >>> >>> >> >>> >>> >>> >> >>> >>> >>> >> >>> >>> >>> >> -- >>> >>> >>> >> Anthony ASSO >>> >>> >>> >> 4 Rue de Bayeux - Apt. 529 >>> >>> >>> >> 31300 TOULOUSE >>> >>> >>> >> --- >>> >>> >>> >> Tel: 06.25.74.04.29 >>> >>> >>> >> anthony.a...@gmail.com >>> >>> >>> >> >>> >>> >>> >> -- >>> >>> >>> >> Vous recevez ce message, car vous êtes abonné au >>> >>> groupe Google >>> >>> >>> >> Groupes Symfony-fr. >>> >>> >>> >> Pour envoyer un message à ce groupe, adressez un >>> >>> e-mail >>> >>> >>> >> à symfony...@googlegroups.com. >>> >>> >>> >> Pour vous désabonner de ce groupe, envoyez un >>> >>> e-mail à l'adresse >>> >>> >>> >> symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> >>> >> Pour plus d'options, consultez la page de ce groupe : >>> >>> >>> >> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >> >>> >>> >>> > >>> >>> >>> > >>> >>> >>> > >>> >>> >>> > -- >>> >>> >>> > Cordialement, >>> >>> >>> > >>> >>> >>> > Manuel Brossard >>> >>> >>> > Twitter: twitter.com/infonel >>> >>> >>> > Skype : mantex2039 >>> >>> >>> > >>> >>> >>> > Tel: + 33 9 72 17 00 41 >>> >>> >>> > >>> >>> >>> > -- >>> >>> >>> > Vous recevez ce message, car vous êtes abonné au >>> >>> groupe Google >>> >>> >>> > Groupes Symfony-fr. >>> >>> >>> > Pour envoyer un message à ce groupe, adressez un >>> >>> e-mail >>> >>> >>> > à symfony...@googlegroups.com. >>> >>> >>> > Pour vous désabonner de ce groupe, envoyez un >>> >>> e-mail à l'adresse >>> >>> >>> > symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> >>> > Pour plus d'options, consultez la page de ce groupe : >>> >>> >>> > http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> > >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> >>> Anthony ASSO >>> >>> >>> 4 Rue de Bayeux - Apt. 529 >>> >>> >>> 31300 TOULOUSE >>> >>> >>> --- >>> >>> >>> Tel: 06.25.74.04.29 >>> >>> >>> anthony.a...@gmail.com >>> >>> >>> >>> >>> >>> -- >>> >>> >>> Vous recevez ce message, car vous êtes abonné au >>> >>> groupe Google >>> >>> >>> Groupes Symfony-fr. >>> >>> >>> Pour envoyer un message à ce groupe, adressez un >>> >>> e-mail >>> >>> >>> à symfony...@googlegroups.com. >>> >>> >>> Pour vous désabonner de ce groupe, envoyez un e-mail >>> >>> à l'adresse >>> >>> >>> symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> >>> Pour plus d'options, consultez la page de ce groupe : >>> >>> >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >>> >>> >> >>> >>> >> >>> >>> >> >>> >>> >> -- >>> >>> >> >>> >>> >> MOHAMED EL HAROUACHI >>> >>> >> Ingénieur d'études et de développement >>> >>> >> Smile Maroc >>> >>> >> Smile – Open Source Solutions >>> >>> >> www.smile.fr >>> >>> >> >>> >>> >> Tél : (+212) 522 27 13 74 / +212 5 22 27 49 89 >>> >>> >> Fax : (+212) 522 27 13 74 >>> >>> >> Mob : (+212) 678403494 >>> >>> >> Mail : elharoua...@gmail.com >>> >>> >> >>> >>> >> -- >>> >>> >> Vous recevez ce message, car vous êtes abonné au >>> >>> groupe Google >>> >>> >> Groupes Symfony-fr. >>> >>> >> Pour envoyer un message à ce groupe, adressez un >>> >>> e-mail >>> >>> >> à symfony...@googlegroups.com. >>> >>> >> Pour vous désabonner de ce groupe, envoyez un e-mail à >>> >>> l'adresse >>> >>> >> symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> >> Pour plus d'options, consultez la page de ce groupe : >>> >>> >> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> > >>> >>> > >>> >>> > >>> >>> > -- >>> >>> > Cordialement, >>> >>> > >>> >>> > Manuel Brossard >>> >>> > Twitter: twitter.com/infonel >>> >>> > Skype : mantex2039 >>> >>> > >>> >>> > Tel: + 33 9 72 17 00 41 >>> >>> > >>> >>> > -- >>> >>> > Vous recevez ce message, car vous êtes abonné au groupe >>> >>> Google >>> >>> > Groupes Symfony-fr. >>> >>> > Pour envoyer un message à ce groupe, adressez un e-mail >>> >>> > à symfony...@googlegroups.com. >>> >>> > Pour vous désabonner de ce groupe, envoyez un e-mail à >>> >>> l'adresse >>> >>> > symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> > Pour plus d'options, consultez la page de ce groupe : >>> >>> > http://groups.google.com/group/symfony-fr?hl=fr >>> >>> > >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Anthony ASSO >>> >>> 4 Rue de Bayeux - Apt. 529 >>> >>> 31300 TOULOUSE >>> >>> --- >>> >>> Tel: 06.25.74.04.29 >>> >>> anthony.a...@gmail.com >>> >>> >>> >>> -- >>> >>> Vous recevez ce message, car vous êtes abonné au groupe >>> >>> Google Groupes Symfony-fr. >>> >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> >>> symfony...@googlegroups.com. >>> >>> Pour vous désabonner de ce groupe, envoyez un e-mail à >>> >>> l'adresse >>> >>> symfony-fr+unsubscr...@googlegroups.com >>> >>> <mailto:symfony-fr%2bunsubscr...@googlegroups.com> . >>> >>> Pour plus d'options, consultez la page de ce groupe : >>> >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Cordialement, >>> >>> >>> >>> Manuel Brossard >>> >>> Twitter: twitter.com/infonel >>> >>> Skype : mantex2039 >>> >>> >>> >>> Tel: + 33 9 72 17 00 41 >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Vous recevez ce message, car vous êtes abonné au groupe Google >>> >>> Groupes Symfony-fr. >>> >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> >>> symfony...@googlegroups.com. >>> >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> >>> symfony-fr+unsubscr...@googlegroups.com. >>> >>> Pour plus d'options, consultez la page de ce groupe : >>> >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >>> >>> >>> -- >>> >>> Vous recevez ce message, car vous êtes abonné au groupe Google >>> >>> Groupes Symfony-fr. >>> >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> >>> symfony...@googlegroups.com. >>> >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> >>> symfony-fr+unsubscr...@googlegroups.com. >>> >>> Pour plus d'options, consultez la page de ce groupe : >>> >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >>> >>> >> >>> >> >>> >> >>> >> -- >>> >> Cordialement, >>> >> >>> >> Manuel Brossard >>> >> Twitter: twitter.com/infonel >>> >> Skype : mantex2039 >>> >> >>> >> Tel: + 33 9 72 17 00 41 >>> >> >>> > >>> > >>> > >>> > -- >>> > Cordialement, >>> > >>> > Manuel Brossard >>> > Twitter: twitter.com/infonel >>> > Skype : mantex2039 >>> > >>> > Tel: + 33 9 72 17 00 41 >>> > >>> > -- >>> > Vous recevez ce message, car vous êtes abonné au groupe Google >>> > Groupes Symfony-fr. >>> > Pour envoyer un message à ce groupe, adressez un e-mail à >>> > symfony...@googlegroups.com. >>> > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> > symfony-fr+unsubscr...@googlegroups.com. >>> > Pour plus d'options, consultez la page de ce groupe : >>> > http://groups.google.com/group/symfony-fr?hl=fr >>> >>> -- >>> Vous recevez ce message, car vous êtes abonné au groupe Google >>> Groupes Symfony-fr. >>> Pour envoyer un message à ce groupe, adressez un e-mail à >>> symfony...@googlegroups.com. >>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse >>> symfony-fr+unsubscr...@googlegroups.com. >>> Pour plus d'options, consultez la page de ce groupe : >>> http://groups.google.com/group/symfony-fr?hl=fr >>> >> >> >> >> -- >> Cordialement, >> >> Manuel Brossard >> Twitter: twitter.com/infonel >> Skype : mantex2039 >> >> Tel: + 33 9 72 17 00 41 >> > > > > -- > Cordialement, > > Manuel Brossard > Twitter: twitter.com/infonel > Skype : mantex2039 > > Tel: + 33 9 72 17 00 41 > > -- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > Symfony-fr. > Pour envoyer un message à ce groupe, adressez un e-mail à > symfony...@googlegroups.com. > Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse > symfony-fr+unsubscr...@googlegroups.com. > Pour plus d'options, consultez la page de ce groupe : > http://groups.google.com/group/symfony-fr?hl=fr > -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à symfony...@googlegroups.com. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse symfony-fr+unsubscr...@googlegroups.com. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à symfony...@googlegroups.com. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse symfony-fr+unsubscr...@googlegroups.com. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr