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 :

Validation form de sfWidgetFormChoice [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 57
    Par défaut Validation form de sfWidgetFormChoice
    Bonjour,

    j'ai un souci avec la validation de ma form qui comporte plusieurs sfWidgetForm choice :

    Voici ma form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $this->setWidgets(array('produit' => new  sfWidgetFormChoice(array('choices'=> $produits, 'multiple' => true, 'expanded' => false)),
     
     
    		'gravite' => new  sfWidgetFormChoice(array('choices'=> $gravite, 'multiple' => true, 'expanded' => false))));
     
    $this->validatorSchema['produit'] = new sfValidatorChoice(array('multiple' => true,'choices'=> $produits),array('required' => 'Sélectionner au moins un produit.'));
     
    $this->validatorSchema['gravite'] = new sfValidatorChoice(array('multiple' => true,'choices'=> $gravite),array('required' => 'Sélectionner au moins une Gravité.'));
    Mon action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $this->form = new StatForm();
     
    	if($request->isMethod('post')){
     
    		$this->form->bind(array('produit' => $request->getParameter('produit')),
    		 array('gravite' => $request->getParameter('gravite'))
    						  );
     
     
    		if ($this->form->isValid())
    		{
    		......
    j'ai deux type d'erreur selon la combinaison dans le choix :

    1 - Unexpected extra form field named "gravite". respectivement "produit"

    2 - Warning: array_keys() [function.array-keys]: The first argument should be an array in ..\lib\vendor\symfony\lib\form\sfForm.class.php on line 1237

    Warning: sort() expects parameter 1 to be array, null given in ...\lib\form\sfForm.class.php on line 1238

    J'ai des doutes sur le fonctionnement de bind() !!!

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Sauf erreur de ma part, le deuxième paramètre de bind() ne sert qu'à lier des valeurs issues de $_FILES donc tu n'en as pas besoin ici.

    Essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $this->form->bind(
       array(
          'produit' => $request->getParameter('produit'),
          'gravite' => $request->getParameter('gravite')
        )
    );

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 57
    Par défaut
    Merci pour ta réponse

    d'après ce que tu m'explique, je doit tous mettre dans le premier argument pour que les validateurs fonctionnes pour chaque éléments de ma forme ??

    je doit changer le tableau en mettant le tous dans un seule !!!!????

    je vais tester ça pour confirmé

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 57
    Par défaut
    Ok super ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->form->bind(array('produit' => $request->getParameter('produit')
    						  ,'gravite' => $request->getParameter('gravite')));
    en effet, il faut tous mettre dans le premier argument.

    Merci Beaucoup SADIKI (mon ami )

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    You're welcome

    Citation Envoyé par azou_gold Voir le message
    d'après ce que tu m'explique, je doit tous mettre dans le premier argument pour que les validateurs fonctionnes pour chaque éléments de ma forme ??
    Pour être tout à fait précis, le deuxième argument sert pour lier des valeurs associées à des fichiers téléchargés. Pour les valeurs classiques, le premier argument suffit et c'est un tableau associatif 'nom_du_widget' => valeur

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

Discussions similaires

  1. Actualiser une page après validation form
    Par toffff dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/04/2007, 18h48
  2. Réponses: 2
    Dernier message: 27/07/2006, 18h50
  3. Validation Form Principal
    Par xanthos1348 dans le forum Access
    Réponses: 5
    Dernier message: 26/02/2006, 21h44
  4. validation form en fonction de plusieurs groupe de checkbox
    Par Steph777 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/01/2006, 12h00
  5. [Struts] Validate Form et ActionError
    Par cosmos38240 dans le forum Struts 1
    Réponses: 4
    Dernier message: 25/10/2005, 16h00

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