Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-04-2008 16:26:58

OrangeKarma
Nouveau membre
Date d'inscription: 10-04-2008
Messages: 6

[Zend_Form][1.5] Validation de date composée de plusieurs champs

Bonjour et merci à cette communauté grâce à laquelle j'ai pu trouver bon nombre de solutions à mes soucis.

Aujourd'hui je fais appel à vous pour effectuer une validation de date composée de 3 champs de type select (jour, mois, et année)

J'ai bien compris comment effectuer des tests sur chaque élément grâce à $element->addValidator().
Je peux donc vérifier que les valeurs du jour, du mois et de l'année sont potentiellement bonnes, mais je ne vois aucun moyen d'effectuer une validation globale sur les 3 champs d'un coup, pour vérifier que la date dans son ensemble est correcte.

Merci de votre aide

Dernière modification par OrangeKarma (10-04-2008 17:36:27)

Hors ligne

 

#2 10-04-2008 16:47:57

apsy
Membre
Date d'inscription: 25-06-2007
Messages: 50

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Code:

         $date = new Zend_Validate_Date();
        
        if ($date->isValid( $year . '-' . $month . '-' . $day)) {
           echo 'VALID !';
        } else {
            echo 'NON VALID !';
        }

Hors ligne

 

#3 10-04-2008 17:08:02

OrangeKarma
Nouveau membre
Date d'inscription: 10-04-2008
Messages: 6

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Oui, d'accord.
Je vais recentrer le problème :
Pour pouvoir utiliser

apsy a écrit:

$date = new Zend_Validate_Date();
if ($date->isValid( $year . '-' . $month . '-' . $day)) {
    echo 'VALID !';
} else {
    echo 'NON VALID !';
}

je dois pouvoir récupérer la valeur de mes 3 champs pour les assigner à $year, $month et $day. Or, je n'arrive à récupérer la valeur de ces champs qu'une fois que le formulaire a été rendu (donc après la vérification des champs!).

exemple :

Code:

$form->addElement(new Zend_Form_Element_Text("jour"));
$form->addElement(new Zend_Form_Element_Text("mois"));
$form->addElement(new Zend_Form_Element_Text("annee"));

Zend_Debug::dump($form->getValues(), "avant rendu : ");

$form->render();

Zend_Debug::dump($form->getValues(), "après rendu : ");

produit en sorti :

Code:

avant rendu : array(3) {
  ["jour"] => NULL
  ["mois"] => NULL
  ["annee"] => NULL

après rendu : array(3) {
  ["jour"] => string(2) "15"
  ["mois"] => string(2) "11"
  ["annee"] => string(4) "2008"

Suis-je passé à côté de quelquechose ? (j'en ai peur! roll)

Dernière modification par OrangeKarma (10-04-2008 17:09:35)

Hors ligne

 

#4 10-04-2008 17:12:07

apsy
Membre
Date d'inscription: 25-06-2007
Messages: 50

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Non, c'est normal smile

Tu recuperes tes valeurs qu'apres un $form->isValid() ou un $form->render() smile

Je te conseille donc de faire un isValid() puis après de tester avec le Zend_Validate_Date smile

Apsy

Dernière modification par apsy (10-04-2008 17:12:51)

Hors ligne

 

#5 10-04-2008 17:24:00

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Moi j'utilise cette syntaxe :

Code:

if (!(Zend_Date::isDate($date_op,'dd MM yyyy','fr')))

Hors ligne

 

#6 10-04-2008 17:27:20

OrangeKarma
Nouveau membre
Date d'inscription: 10-04-2008
Messages: 6

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Effectivement. Merci de ta réponse Apsy.

Cependant je trouve cela complètement illogique : ça m'oblige à effectuer une vérification globale de mon formulaire avant d'effectuer mes vérifications de dates??

Dans mon contrôlleur, lorsque je lance la vérification de mon formulaire via $form->isValid($_POST), ce n'est pas pour être obligé d'effectuer d'autres vérifications! La méthode isValid() porte bien son nom : elle est déjà sensée me retourner si mon formulaire est bon ou pas!

N'y aurait-il pas un autre moyen plus logique (et plus souple)?


ziedb => Dis moi si je me trompe, mais le problème reste le même : ta variable $date_op doit contenir l'association des valeurs des 3 champs.

Hors ligne

 

#7 10-04-2008 17:37:15

apsy
Membre
Date d'inscription: 25-06-2007
Messages: 50

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Personnelement, j'écrirais une classe Validate qui ferait ce que tu veux faire puis je l'ajouterais à mon élement de formulaire smile C'est ce que j'ai fait pour tester l'existence d'une adresse mail en base de données (pour éviter l'inscription de deux emails identiques).

Apsy

Dernière modification par apsy (10-04-2008 17:38:27)

Hors ligne

 

#8 10-04-2008 17:40:03

OrangeKarma
Nouveau membre
Date d'inscription: 10-04-2008
Messages: 6

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

Merci, je vais essayer cette solution. Tu n'aurais pas un exemple sous le coude histoire de me faire gagner du temps stp?

Dernière modification par OrangeKarma (10-04-2008 17:51:18)

Hors ligne

 

#9 10-04-2008 22:28:03

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

Re: [Zend_Form][1.5] Validation de date composée de plusieurs champs

NB: Perso pour des problèmes d'ergonomies, je ne conseille pas les date en 3 selects.
Les personnes tappent plus logiquement une date formatée... A la limite un petit jQuery Datepicker peut le faire wink

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