2010-01-23 5 views
3

Je ne parviens pas à voir ce que je peux faire de mal avec la validation de formulaire Symfony 1.4 suivante. Fondamentalement, tout ce que je veux, c'est que les quatre conditions soient correctement prises en compte (obligatoire, min-length, max-length, expression régulière). Cela fonctionne réellement, mais pour la condition "requise" il ne parvient pas à afficher mon message d'erreur personnalisé et dit simplement "Obligatoire" à la place. Existe-t-il un moyen d'afficher MON message d'erreur?Problème avec la validation de formulaire Symfony

'username' => new sfValidatorAnd(array(
    new sfValidatorString(
     array('required' => true, 'min_length' => 4, 'max_length' => 20), 
     array('required' => 'Please enter a username.', 'min_length' => 'Your username must have at least 4 characters.', 'max_length' => 'Your username cannot be longer than 20 characters.') 
     ), 
    new sfValidatorRegex(
     array('pattern' => '/^[A-z0-9]*$/i'), 
     array('invalid' => 'Your username can only have letters (A-Z) or numbers (0-9).') 
     ), 
)), 

Une chose supplémentaire, si je retire le validateur Regex et juste de le transformer en une seule ligne normale chaîne validateur, mon habitude message d'erreur ne montre !?

Quelqu'un?

Merci d'avance.

Répondre

6

J'ai remarqué même question il y a environ deux semaines et trouvé une solution - il suffit de déplacer votre message à sfValidatorAnd déclaration:

'username' => new sfValidatorAnd(array(
    new sfValidatorString(
     array('required' => true, 'min_length' => 4, 'max_length' => 20), 
     array('min_length' => 'Your username must have at least 4 characters.', 'max_length' => 'Your username cannot be longer than 20 characters.') 
     ), 
    new sfValidatorRegex(
     array('pattern' => '/^[A-z0-9]*$/i'), 
     array('invalid' => 'Your username can only have letters (A-Z) or numbers (0-9).') 
     ), 
), array(), array('required' => 'Please enter a username.')), 

Cela m'a aidé, j'espère que cela vous aide aussi.

+0

Darmen, merci beaucoup! Vous avez travaillé avec votre solution après avoir passé trop de temps à essayer de le comprendre. Votre code ci-dessus m'a donné une erreur, donc j'ai remplacé 'NULL' par 'array()' qui efface l'erreur .... ce qui signifie aussi que la première clause 'required' dans le sfValidatorString peut être supprimée. Merci encore. – Tom

+0

@Tom, je vous en prie. J'ai corrigé la réponse pour les utilisateurs qui auront le même problème à l'avenir. – Darmen

+0

Vous ne savez pas si vous l'avez fait intentionnellement, mais [A-z0-9] correspondra aux caractères que vous ne voulez probablement pas (entre 'Z' et 'a' sont '[', '\', ']', '^ ',' _ '). Randomly a essayé l'un d'entre eux et a été surpris. – Tool

Questions connexes