Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-04-2008 12:25:18

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

[Résolu] Form / Validator : erreur : Internal error matching pattern

Bonjour,

Je souhaiterai créer un validateur qui test accepte uniquement les chiffres sous la forme { 1 1.00 1.0 10.00 } bref un format monétaire.

J'ai ce validateur :

Code:

->addValidator(new Zend_Validate_Regex('^[-+]?[0-9]*\.?[0-9]+$'),true, array('messages'=>'Entrer un format monétaire 0.00'))

J'ai l'erreur suivante

Code:

Internal error matching pattern '^[-+]?[0-9]*\,?[0-9]+$' against value '1.00'
C:\wamp\www\location\library\Zend\Validate\Regex.php à la ligne 116

A la ligne 116, j'ai le code suivant :

Code:

public function isValid($value)
    {
        $valueString = (string) $value;
 
        $this->_setValue($valueString);
 
        $status = @preg_match($this->_pattern, $valueString);
        if (false === $status) {
            /**
             * @see Zend_Validate_Exception
             */
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("Internal error matching pattern '$this->_pattern' against value '$valueString'");
        }
        if (!$status) {
            $this->_error();
            return false;
        }
        return true;
    }

Ce que je ne comprends pas :
- Pourquoi je tombe dans le if (false === $status) alors que si l'expression passé en paramètre est fausse, je dois récupérer en sortie "false" fournit par if(!$status) ?

Merci pour vos lumières

Dernière modification par whitespirit (30-04-2008 07:32:01)

Hors ligne

 

#2 29-04-2008 18:54:52

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu] Form / Validator : erreur : Internal error matching pattern

C'est parcequ'il fallait mettre / autour de l'expression, ce qui me donne '/^[-+]?[0-9]*\.?[0-9]{0,2}$/'.

Par contre, en cas d'erreur, j'ai le message d'erreur tel qu'il est défini dans la classe Zend_Validate_Regex. J'ai ce code, mais je n'arrive pas à m'en sortir

Code:

    const NOT_MATCH = 'regexNotMatch';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_MATCH => "'%value%' does not match against pattern '%pattern%'"
    );

Vous savez comment faire pour traduire en gardant ce code

Code:

->addValidator(new Zend_Validate_Regex('^[-+]?[0-9]*\.?[0-9]+$'),true, array('messages'=>'Entrer un format monétaire 0.00'))

?

Hors ligne

 

#3 30-04-2008 07:31:22

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu] Form / Validator : erreur : Internal error matching pattern

Fallait créer soit même le message d'erreur depuis le validateur :

Code:

$validator = new Zend_Validate_Regex('/^[-+]?[0-9]*\.?[0-9]{0,2}$/');     
        $validator->setMessage("La chaîne '%value%' n'est pas au format attendue, veuillez entrer par exemple 1.00",  Zend_Validate_Regex::NOT_MATCH);

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages