2010-01-18 9 views
1

Je ne veux pas un champ email vide dans mon formulaire pour déclencher une Doctrine_Validator_Exception. Mais, puisque Doctrine_Validator_Email utilise "is_null()" pour vérifier les valeurs vides (non-existantes) (et le POST ['email'] contient une chaîne vide), il le fait.Doctrine Email Validation déclenche sur champ de formulaire vide

Est-ce correct? Y a-t-il un moyen simple de contourner cela? Cela a également un impact en essayant de définir une colonne comme unique (essayer pour stocker une deuxième chaîne vide dans la colonne déclenche le validateur).

Qu'est-ce qui me manque?

Merci à l'avance, Erland Wiencke

(Symfony 1.4.1/Doctrine 1.2)

Répondre

0

Il existe plusieurs façons, non testés, mais semblent fonctionner alltogether ou séparément:

1) $this->validatorSchema['email'] = null;

ou

2) $this->validatorSchema['email'] = sfValidatorPass();

ou

3) $this->validatorSchema->setOption('allow_extra_fields', true);

ou

4) Il suffit de définir required attribut false:

$this->widgetSchema['email'] = sfWidgetFormInputText(array('required' => false)); 
+0

Merci, mais les validateurs sf ne sont pas la question. Il semble également y avoir quelques erreurs dans votre exemple (l'option 'required' sur un widget en est une). –

1

je suis tombé sur ce même problème dans notre application Doctrine 1.2. Dans mon cas, le correctif a fini par l'ajout de cette solution de contournement à la méthode merge() de l'enregistrement:

$this->email = trim($this->email); 
    if ($this->email == '') { 
     $this->email = null; 
    } 
Questions connexes