2009-09-08 9 views
2

Je valide une chaîne de date saisie par l'utilisateur au format YYYY-MM-DD en utilisant Zend_Validate::is($value,'Date').Validation des chaînes au format YYYY-MM-DD avec Zend_Validate_Date dans les paramètres régionaux en_US

Cet appel crée cette hiérarchie:

Zend_Validate::is() 
Zend_Validate_Date->isValid() 
Zend_Date::isDate() 
Zend_Locale_Format::getDate() 
Zend_Locale_Format::_parseDate() 

Enfin, il échoue à cette exception:

Zend_Locale_Exception: Unable to parse date '2009-09-08' using 'MMM d, y' (M <> y) in /usr/share/php/Zend/Locale/Format.php on line 1001 

J'utilise comme mon en_US locale d'application. Comment puis-je configurer Zend_Validate pour accepter ce format de date? Est-il possible de changer le format de locale de la date, par exemple?

Répondre

9

Essayez que:

$validator = new Zend_Validate_Date('YYYY-MM-DD'); 
if($validator->isValid($value)) 
    // yay 
+0

merci beaucoup. Je n'ai jamais utilisé de classe individuelle Zend_Validate_X auparavant. c'est plus personnalisable. – farzad

+9

Vous devriez utiliser ''yyyy-MM-dd'' si ... YYYY est" Année ISO "(qui est subtilement différente au début de l'année) et" DD "jour de l'année pas le jour du mois. http://framework.zend.com/manual/fr/zend.date.constants.html#zend.date.constants.selfdefinedformats.table – gnarf

+0

Si vous avez d'autres valideurs ou un validateur personnalisé sur le même élément, il serait conseillé pour ajouter ce validateur en tant que deuxième (ou dernier) – surfer190

5

zend_validate_date a un bug, lorsque vous spécifiez le format suivant yyyy-MM-dd et si une chaîne de date 2011-10-11 12312 est transmis pour validation, il renvoie true au lieu de faux !!

+4

Cela ne semble pas être lié à la question originale ... –

+0

Toutes les mises à jour concernant ce bug, Il semble que je l'affronte aussi. –

Questions connexes