|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Bonjour,
Je ne vois pas comment pourrais-je combiner les validateurs pour tester un type monétaire. Par exemple 5 ou 19,50 ? Avez-vous une idée ? |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
|
|
|
00
|
|
|
#3 | ||||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Voilà ce que je test :
Code :
->addValidator(new Zend_Validate_Regex('^[-+]?[0-9]*\.?[0-9]+$'),true, array('messages'=>'Entrer un format monétaire 0.00')) Code :
Code :
Je ne suis pas habitué à utiliser les expressions régulières, peut-être que l'erreur est logique ? |
||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Bonjour,
les === signifient que les valeurs testées doivent être égales ET de même type (donc pas de conversion). Cela permet d'être sûr que $status a renvoyé false, et pas une valeur pouvant être convertie en false (comme 0). Dans ce que tu postes, il y a quelque chose que je ne comprend pas : est-tu bien sûr de tester l'expression régulière '^[-+]?[0-9]*\.?[0-9]+$' et pas '^[-+]?[0-9]*\,?[0-9]+$' comme indiqué dans le message d'erreur, et qui explique pourquoi 1.00 n'est pas conforme (test de la virgule et pas du point) ? |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
J'applique l'expression régulière bien sur un '.', et le message d'erreur le montre bien. Par contre, je ne vois pas pourquoi j'entre dans le if=== car au pire, mon expression n'est pas conforme, non ?
|
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Ha oui, en fait, c'est que j'ai fais plusieurs test, avec la virgule, le point. Mais quoi qu'il en soit, j'ai toujours le même message d'erreur.
Mais sur le principe, tu n'es pas d'accord que c'est bien le but du validateur de déterminer ou non si l'élément qui lui est fournit est au bon format et traiter l'erreur ? |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Citation:
Je vais essayer de regarder pourquoi... |
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Rebonjour,
en fait, il faut encadrer ton expression par des délimiteurs de pattern (exemple : slash) : Code :
->addValidator(new Zend_Validate_Regex('/^[-+]?[0-9]*\.?[0-9]+$/'),true, array('messages'=>'Entrer un format monétaire 0.00'))
Code :
->addValidator(new Zend_Validate_Regex('/^[-+]?[0-9]*\.?[0-9]{0,2}$/'),true, array('messages'=>'Entrer un format monétaire 0.00'))
|
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Hey, c'est trop merveilleux. Ca marche.
Pourtant je vais faire la fine bouche, le message d'erreur est Code :
'f' does not match against pattern '/^[-+]?[0-9]*\.?[0-9]{0,2}$/' Code :
|
||
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Voir le manuel du framework :
http://framework.zend.com/manual/fr/...ction.messages |
|
|
00
|
|
|
#12 | ||
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Purée, tu es très fort !!!! Oui, j'avais raté ce passage dans la doc.
Voilà comment est créé mon validateur final : Code :
|
||
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
de rien
Citation:
http://www.php.net/manual/fr/intro.pcre.php |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com