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.