Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-05-2007 19:10:57

KevinD
Membre
Lieu: Valenciennes
Date d'inscription: 11-05-2007
Messages: 10
Site web

[Zend_Validate_Date] [0.9.3] Différent format de date ?

Bonjour,

Je souhaiterai utiliser la classe Zend_Validate_Date pour mes dates, cependant j'ai remarqué que le format pris en compte est YYYY-MM-DD.
Or je souhaiterai utiliser un autre format (en l'occurence DD/MM/YYYY).

Existe-t-il un élément/classe propre à Zend pour effectuer le changement de format ? Est-ce prévu de gérer différent format dans un version ultérieur ? Ou faut-il recréer une classe ou faire un formattage main ?

Merci,
Kévin D.


...

Hors ligne

 

#2 28-05-2007 14:14:26

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Bonjour KevinD,

Zend_Validate_Date ne prend en compte qu'un seul format pour l'instant. Par contre, tu peux facilement le sous-classer, changer le format de la date et appeler la fonction initiale. Un truc du genre (non testé)

Code:

class Kitpages_Validate_Date extends Zend_Validate_Date {
    public function isValid($value)
    {
        list($jour,$mois,$an) = explode("/",$value);
        return parent::isValid("$an-$mois-$jour");
    }

}

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 28-05-2007 14:31:15

KevinD
Membre
Lieu: Valenciennes
Date d'inscription: 11-05-2007
Messages: 10
Site web

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Hello,

C'est bien ce que je pensai :p

Je ne me suis pas embété, j'ai repris le code de la classe et l'ai modifié :

Code:

class MyLib_Validate_Date implements Zend_Validate_Interface {
    
    protected $_messages = array();
    
    public function isValid($value)
    {
        $this->_messages = array();
        
        $valueString = (string) $value;
        
        if (!preg_match('#\d{4}/\d{2}/\d{2}#', $valueString)) {
            $this->_messages[] = 'Le format de la date doit être JJ/MM/AAAA.';
            return false;
        }
        
        list($year, $month, $day) = sscanf($valueString, '%d/%d/%d');
        
        if (!checkdate($month, $day, $year)) {
            $this->_messages[] = 'La date est incorrecte.';
            return false;
        }
        
        return true;
    }
    
    public function getMessages()
    {
        return $this->_messages;
    }
    
}

Sinon, peux-t-on espérer l'arrivé du support des différents formats de dates dans une prochaine version ? Un peu comme le fait Zend_Validate_Float ?

Kevin D.


...

Hors ligne

 

#4 28-05-2007 14:40:18

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Tout ce que je peux dire c'est qu'il n'y a pas de "Feature request" (demande d'évolution) dans le suivi de bug. Je ne suis pas certain que ça soit à l'ordre du jour du multiplier les validateurs. La voie standard semble être de sous classer les fonctions de base pour créer des fonctions plus évoluées. L'idée est de garder les fonctions de base simples.


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 29-05-2007 14:02:09

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Mais dans l'esprit i18n, le framework devrait pourvoir valider différents formats de date. Sinon moi j'vais en chier avec mon site en 15 langues... Doit y avoir moyen de paramétrer cela en fonction de la locale...

Hors ligne

 

#6 29-05-2007 14:38:13

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Que dire... bon courage ? smile

Sinon tu peux aussi combiner Zend_Date et Zend_Validate_Date avec un truc du genre (tjrs non testé) :

Code:

class Kitpages_Validate_Date extends Zend_Validate_Date {
    public function isValid($value)
    {
        $date = new Zend_Date($value, Zend_Date::DATES, $myLocale);
        return parent::isValid($date->toString('Y-m-d'));
    }

}

va voir l'URL http://framework.zend.com/manual/en/zen … tants.html pour voir quel format d'entrée tu peux utiliser (ces formats sont localisés en fonction de $myLocale), sur cet exemple, le format d'entrée est un peu foireux... (c'est le Zend_Date::DATES que tu devras changer).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 24-04-2008 14:50:55

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Bonjour,

je fais remonter ce post afin de savoir si d'autres solutions ont été mises en place depuis.
Je cherche a faire un truc dans ce genre :

Code:

$dateNaissance= new Zend_Form_Element_text("dateNaissance");
$dateNaissance->setLabel("Date de naissance");
$validatorNotEmptyDateNaissance = new Zend_Validate_Date('d/m/y',null);
$dateNaissance->addValidator($validatorNotEmptyDateNaissance);

La vérification du format ne se fait pas correctement.
Comment gérez vous les validator de date dans vos formes ?

Hors ligne

 

#8 24-04-2008 16:15:56

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Salut

Zend_Validate_Date utilise Zend_date pour faire la validation il faut donc utiliser le format 'DD/MM/YYYY' pour que ça fonctionne correctement :

new Zend_Validate_Date('DD/MM/YYY',null);

Dernière modification par 2mx (24-04-2008 16:16:26)

Hors ligne

 

#9 24-04-2008 16:25:04

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Ba oui, ca fonctionne.
Merci smile
(j'aurais pu m'en douter...pour ma défense,c'était du vieux code qui datait de la 1.5rc, et "DD/MM/YYYY" ne fonctionnait pas à l'époque)

Dernière modification par bertra (24-04-2008 16:26:32)

Hors ligne

 

#10 24-04-2008 17:22:01

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

exemple :
$birthdate = new Zend_Form_Element_Text('birthdate');
$birthdate->setLabel('Date de naissance (jj/mm/aaaa):');
$birthdate->addValidator(new Zend_Validate_Date('dd/mm/YYYY'));


----
Gruiiik !

Hors ligne

 

#11 25-04-2008 17:30:30

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Ba non...je comprend pas.
Je peux toujours saisir des dates ayant des formats différents (ddmmyy par exemple).
Ca vient de chez moi ou quoi ?

Hors ligne

 

#12 28-04-2008 09:15:41

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Non, berta, je viens de tester le code que je t'ai montré,
il accepte 31/31/31
Et il ne convertit meme pas 31 en 1931, car dans ma base de donnée mysql, le champ date renvoi ca :
0044-07-31


----
Gruiiik !

Hors ligne

 

#13 28-04-2008 12:49:17

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

c'est facheux ca ... je fais comment moi pour valider mes dates ? En sachant que tous mes controles de formulaires utilisent les validator sad

Hors ligne

 

#14 29-04-2008 09:07:29

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Zend_Validate_Date] [0.9.3] Différent format de date ?

Perso j'utilise JSCalendar, un script permettant d'afficher un calendrier dans les champs input text. J'y est mis comme attribut à ce input "readonly" de façon que l'utilisateur ne puisse pas la modifier manuellement. Ensuite, je gère la date pour l'insérer au bon format dans MySQL (une fonction que m'a donné l'un d'entre vous

Code:

$date = implode('/',array_reverse(explode('/',$date)));

Je suis super satisfait de cette méthode car je n'ai plus besoin de validator Date. Si ça t'interesse, je peux te donner plus de détail.

Dernière modification par whitespirit (29-04-2008 09:08:23)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages