Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 10h55   #1
Membre régulier
 
Inscription : mars 2007
Messages : 225
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 225
Points : 86
Points : 86
Par défaut Validateurs sur le formulaire entier

L'habitude avec symfony est de placer les validateurs sur les champs individuellement, mais il est arrivé que je dois placer un validateur qui porte sur plusieurs champs. D'abord mon schema:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
vote: 
  actAs: 
    Timestampable: 
  columns: 
    petition_id: 
      type:     integer
      notnull:  true
    sf_guard_user_profile_id:
      type:     integer
  relations: 
    petition: 
      local:    petition_id
      foreign:  id
    sfGuardUserProfile:
      local:    sf_guard_user_profile_id
      foreign:  id
Bon, il s'agit de voter pour des pétitions, et chaque pétition, chaque membre n'a droit qu'à un seul vote. Lors de la soumission du formulaire, il s'agit de vérifier que le membre n'a pas déjà voté pour la pétition en cours. J'ai pensé à sfValidatorDoctrineUnique en faisant ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$this->setWidgets(array(
      'petition_id'              => new sfWidgetFormInputHidden(),
      'sf_guard_user_profile_id' => new sfWidgetFormInputHidden(),
    ));

    $this->setValidators(array(
      'petition_id'              => new sfValidatorAnd(array(
	  		new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('petition'), 'required' => true)),
			new sfValidatorDoctrineUnique(array('model' => 'vote', 'column' => array('petition_id', 'sf_guard_user_profile_id'))),
		
		)),
      'sf_guard_user_profile_id' => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('sfGuardUserProfile'), 'required' => true)),
    ));
Mais ça n'a pas marché. Pourriez vous me donner des idées sur comment valider mon formulaire ? merci.
etoileweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 11h29   #2
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 577
Points : 692
Points : 692
Envoyer un message via MSN à kenny.kev
C'est un postvalidator que tu dois pas un validatorAnd().

Le validatorAnd n'agit que sur un champ, alors que le postvalidator sur tout ceux que tu veux.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 11h48   #3
Membre régulier
 
Inscription : mars 2007
Messages : 225
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 225
Points : 86
Points : 86
Et ça a marché. Merci bcp
etoileweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h10.


 
 
 
 
Partenaires

Hébergement Web