Zend_Validate_Date просто не работает должным образом

Похоже, что Zend_Validate_Date просто не работает должным образом. Например:

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

Это простой валидатор, который должен принимать только четырехзначный год, но $validator->isValid('1/2/3') возвращает истину! В самом деле, Зенд?

Или как насчет этого:

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

Даже с указанным выше кодом $otherValidator->isValid('15/13/10/12/1222') тоже возвращает true!

Я использую Zend Framework 1.11.9. Это только я или это действительно ужасный класс проверки? (ОБНОВЛЕНИЕ: другими словами, что-то не так с моим кодом, или это ошибка, которую следует отправить?)


person fronzee    schedule 12.01.2012    source источник
comment
В чем вопрос? Будет ли это ужасный класс проверки?   -  person thetaiko    schedule 12.01.2012
comment
Не только у вас, у него проблемы zf-7583 zf-10030   -  person drew010    schedule 12.01.2012
comment
@thetaiko См. ОБНОВЛЕНИЕ в конце моего сообщения.   -  person fronzee    schedule 12.01.2012


Ответы (1)


Как говорится в комментариях выше, по-видимому, в этом классе есть ошибка. Вот обходной путь, который я придумал, используя 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
);

Надеюсь, это поможет кому-то другому. Обратите внимание, что в качестве разделителя мне нужны только косые черты, а не точки или тире.

person fronzee    schedule 12.01.2012