2010-03-15 3 views
6

Je validation d'un champ de texte sous ma forme comme suit:message d'erreur personnalisé significatif pour Zend RegEx Validator

$name = new Zend_Form_Element_Text('name'); 

$name->setLabel('First Name:') 
     ->setRequired(true) 
     ->addFilter(new Zend_Filter_StringTrim()) 
     ->addValidator('regex',true,array('/^[(a-zA-Z0-9)]+$/')) 
     ->addErrorMessage('Please enter a valid first name'); 

Ce que je suis en train d'accomplir est - comment puis-je afficher un message d'erreur significatif? Par exemple: Si le prénom est 'XYZ-', comment puis-je afficher '- n'est pas autorisé dans le prénom.'

Y a-t-il un moyen d'accéder au caractère de l'expression régulière? Recommanderiez-vous quelque chose d'autre?

J'ai pensé écrire un validateur personnalisé, mais la regex est assez simple, donc je ne vois pas l'intérêt. Je n'ai trouvé nulle part une documentation décente pour le validateur zend 'regex'.

Si je ne l'emporte pas sur le message d'erreur par défaut, je reçois simplement quelque chose comme: ';;; hhbhbhb' ne correspond pas contre modèle «/^ [(a-zA-Z0-9)] + $/'- que je ne veux évidemment pas afficher à l'utilisateur.

J'apprécierais vos entrées.

Répondre

1

Que diriez-vous de dire à l'utilisateur en termes simples quelles sont vos restrictions? Comme

Error: Only the letters A to Z and numbers are allowed. 

(Ce qui me conduit à la question de savoir pourquoi les premiers noms peuvent contenir des chiffres ...)

+0

Salut, c'était juste un exemple ... pourrait être n'importe quel domaine (pas nécessairement le prénom), mais est un exemple du problème im face à c'est tout .. –

+1

Je crois qu'il demandait * comment * mettre un message, pas quel message mettre. –

+0

@Marcus Downing: Je ne pense pas. Elle sait déjà comment mettre en place un message (voir son exemple de code), et elle voulait savoir comment générer un message «personnalisé» pour l'entrée de l'utilisateur. Ce que j'ai déconseillé. –

15

Pour votre message d'erreur personnalisé (s) dans zend standart validateurs passent juste le tableau messages à tout validateur instancier. C'est un tableau, quelles touches sont des types d'erreurs (voir plus loin), et des valeurs - des messages d'erreur.

->addValidator('regex', true, 
         array(
          'pattern'=>'/^[(a-zA-Z0-9)]+$/', 
          'messages'=>array(
           'regexNotMatch'=>'Your own custom error message' 
          ) 
         ) 
) 

Pour voir les clés d'erreur pour d'autres types d'erreur du validateur choisi, vous pouvez vous référer à son code source. Pour le validateur regex, il se trouve à {Zend Framework Library} /Zend/Validate/Regex.php.

Bonne chance en validant :).