2012-01-12 57 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 
); 

希望这将帮助别人。请注意,我只想将斜杠作为分隔符,而不是点或破折号。