2012-01-12 46 views
5

看來Zend_Validate_Date只是簡單地不能正常工作。例如:Zend_Validate_Date只是不能正常工作

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

這是一個簡單的校驗應該只接受一個四位數年份,但$validator->isValid('1/2/3')返回true!真的,Zend?

或者這個怎​​麼樣:

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

即使上面的代碼,$otherValidator->isValid('15/13/10/12/1222')回報true呢!

我正在使用Zend Framework 1.11.9。僅僅是我還是這是一個非常糟糕的驗證課? (更新:換句話說,我的代碼有什麼問題,或者這是一個應該提交的錯誤?)

+0

什麼問題?無論它是一個可怕的驗證類? – thetaiko 2012-01-12 17:39:40

+2

不只是你,它的問題[zf-7583](http://framework.zend.com/issues/browse/ZF-7583)[zf-10030](http://framework.zend.com/issues/瀏覽/ ZF-10030) – drew010 2012-01-12 18:06:47

+0

@thetaiko在我的文章結尾處查看UPDATE。 – fronzee 2012-01-12 18:23:02

回答

6

正如上面的評論所說,顯然這個類有一個錯誤。這裏是我想出了使用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 
); 

希望這將幫助別人。請注意,我只想將斜槓作爲分隔符,而不是點或破折號。