Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
->addValidator(new Zend_Validate_Regex('^[-+]?[0-9]*\.?[0-9]+$'),true, array('messages'=>'Entrer un format monétaire 0.00'))
J'ai l'erreur suivante
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 :
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
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
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
->addValidator(new Zend_Validate_Regex('^[-+]?[0-9]*\.?[0-9]+$'),true, array('messages'=>'Entrer un format monétaire 0.00'))
?
Hors ligne
Fallait créer soit même le message d'erreur depuis le validateur :
$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
Pages: 1