2012-01-12 24 views
5

Parece que Zend_Validate_Date simplemente no funciona correctamente. Por ejemplo:Zend_Validate_Date simplemente no funciona correctamente

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

Este es un validador sencilla que sólo debe aceptar un año de cuatro dígitos, sin embargo $validator->isValid('1/2/3') devuelve true! En serio, Zend?

O ¿qué tal esto:

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

Incluso con el código anterior, $otherValidator->isValid('15/13/10/12/1222') vuelve true también!

Estoy usando Zend Framework 1.11.9. ¿Soy solo yo o esta es una clase de validación realmente terrible? (ACTUALIZACIÓN: en otras palabras, ¿hay algo mal con mi código, o es un error que debe enviarse?)

+0

¿Cuál es la pregunta? Si es una clase de validación terrible? – thetaiko

+2

No solo usted, tiene problemas [zf-7583] (http://framework.zend.com/issues/browse/ZF-7583) [zf-10030] (http://framework.zend.com/issues/ browse/ZF-10030) – drew010

+0

@thetaiko Consulte la ACTUALIZACIÓN al final de mi publicación. – fronzee

Respuesta

6

Como dicen los comentarios anteriores, aparentemente hay un error en esta clase. Esta es la solución que se me ocurrió, utilizando 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 
); 

Esperemos que ayudará a alguien más. Tenga en cuenta que solo quiero barras como separador, no puntos o rayas.

Cuestiones relacionadas