5

Zend_Validate_Date単に正しく機能していないようです。例えば:

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

これは、4 桁の年のみを受け入れる単純なバリデータですが、$validator->isValid('1/2/3')true を返します! 本当に、ゼンド?

またはこれはどうですか:

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

上記のコードでも、$otherValidator->isValid('15/13/10/12/1222')リターンtrueも!

Zend Framework 1.11.9 を使用しています。それは私だけですか、それともこれは本当にひどい検証クラスですか? (更新: つまり、私のコードに何か問題がありますか、それとも提出すべきバグですか?)

4

1 に答える 1

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
);

うまくいけば、それは他の誰かを助けるでしょう。ドットやダッシュではなく、スラッシュのみをセパレーターとして使用することに注意してください。

于 2012-01-12T18:32:22.360 に答える