2012-01-12 21 views
5

Sembra che Zend_Validate_Date semplicemente non funzioni correttamente. Per esempio:Zend_Validate_Date non funziona correttamente

$validator = new Zend_Validate_Date(array('format' => 'yyyy')); 

Questo è un semplice validatore che dovrebbe accettare solo un anno di quattro cifre, eppure $validator->isValid('1/2/3') rendimenti veri! Davvero, Zend?

o come su questa:

$otherValidator = new Zend_Validate_Date(array('format' => 'mm/dd/yyyy')); 

Anche con il codice di cui sopra, $otherValidator->isValid('15/13/10/12/1222') rendimenti true troppo!

Sto utilizzando Zend Framework 1.11.9. Sono solo io o questa è una lezione di validazione davvero terribile? (AGGIORNARE: In altre parole, c'è qualcosa di sbagliato nel mio codice, o si tratta di un bug che dovrebbe essere inviato?)

+0

Qual è la domanda? Che si tratti di una terribile lezione di validazione? – thetaiko

+2

Non solo per te, ha avuto problemi [zf-7583] (http://framework.zend.com/issues/browse/ZF-7583) [zf-10030] (http://framework.zend.com/issues/ browse/ZF-10030) – drew010

+0

@thetaiko Vedere l'AGGIORNAMENTO alla fine del mio post. – fronzee

risposta

6

Come dicono i commenti sopra, apparentemente c'è un bug in questa classe. Ecco la soluzione mi è venuta, utilizzando Zend_Validate_Regex:

$validator = new Zend_Validate_Regex(
    array('pattern' => '/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/') 
); 
$validator->setMessage(
    "Date does not match the format 'mm/dd/yyyy'", 
    Zend_Validate_Regex::NOT_MATCH 
); 

Speriamo che vi aiuterà a qualcun altro. Si noti che voglio solo barre come separatore, non punti o trattini.

Problemi correlati