Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-02-2012 12:39:44

Absot
Membre
Date d'inscription: 28-12-2009
Messages: 170
Site web

Formulaire avec date supérieure à une autre

Bonjour, je suis en train de créer un formulaire et dans celui-ci, j'ai 2 champs date où le deuxième doit être supérieur au premier.

J'ai regardé le validateur GretaherThan mais il ne fonctionne pas avec les dates.

Voici mon code actuel :

Code:

// date de debut du concours
        $daeDebut = new Zend_Form_Element_Text('dateDebut');
        $daeDebut->setRequired(true)
                 ->addFilter('StripTags')
                 ->addFilter('StringTrim')
                 ->addValidator('NotEmpty')
                 ->addValidator(new Zend_Validate_Date(array(
                     'format' => 'dd-MM-yyyy',
                 )))
                 ->setDecorators(array('ViewHelper'));
                 
        // date de fin du concours      
        $dateFin = new Zend_Form_Element_Text('dateFin');
        $dateFin->setRequired(true)
                ->addFilter('StripTags')
                ->addFilter('StringTrim')
                ->addValidator('NotEmpty')
                ->addValidator(new Zend_Validate_Date(array(
                    'format' => 'dd-MM-yyyy',
                )))
                ->setDecorators(array('ViewHelper'));

Vers quoi puis-je me tourner svp?

Hors ligne

 

#2 08-02-2012 14:08:17

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Formulaire avec date supérieure à une autre

Salut,

Pour moi, il faut que tu passes par Zend_Validator_Callback ou la redéfinition de ton validator.

++

Hors ligne

 

#3 08-02-2012 17:30:26

tomtom
Membre
Lieu: Strasbourg
Date d'inscription: 07-01-2009
Messages: 14

Re: Formulaire avec date supérieure à une autre

Tu peux aussi surcharger la méthode isValid de ton form

Code:

[lang=php]
public function isValid($dataSource) {
    $valid = parent::isValid($dataSource);

    // if date1 > date2 $valid = false;

    return $valid;
}

Dernière modification par tomtom (08-02-2012 17:31:49)

Hors ligne

 

#4 08-02-2012 18:05:15

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Formulaire avec date supérieure à une autre

C'est nettement plus propre comme ça ^^
N'oublie pas d'appeler le addError si ton test n'est pas validé.

D'ailleurs, pourquoi n'existe t-il pas une méthode addValidator pour ajouter directement des validators à un formulaire ?

Hors ligne

 

#5 08-02-2012 19:46:16

vg33
Membre
Date d'inscription: 30-07-2008
Messages: 46

Re: Formulaire avec date supérieure à une autre

Pourquoi ne pas créer ton propre validateur ? C'est ce que je fais pour des champs liés. J'attache le validateur au deuxième champ, je récupère la valeur du 1er et je vérifie la validité.

Hors ligne

 

#6 09-02-2012 00:15:58

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Formulaire avec date supérieure à une autre

Pareil, la logique voudrait que l'on crée un validateur.

EDIT : google est ton ami --> http://stackoverflow.com/questions/2232 … today-with

Dernière modification par shadypierre (09-02-2012 00:16:16)

Hors ligne

 

#7 09-02-2012 13:50:52

Absot
Membre
Date d'inscription: 28-12-2009
Messages: 170
Site web

Re: Formulaire avec date supérieure à une autre

Je vais créer mon propre validateur, ce sera plus simple. smile

Hors ligne

 

#8 09-02-2012 14:32:40

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Formulaire avec date supérieure à une autre

Tu as regardé le lien? Car tu as déja une base solide pour faire ton propre validateur, 2 lignes à modifier et c'est fini

Hors ligne

 

#9 09-02-2012 22:03:53

Absot
Membre
Date d'inscription: 28-12-2009
Messages: 170
Site web

Re: Formulaire avec date supérieure à une autre

Oui j'ai regardé le lien.

Si j'ai bien compris, quand je créé mon objet date, je lui mets ce validateur avec en paramètre l'autre date?

Hors ligne

 

#10 10-02-2012 10:46:10

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Formulaire avec date supérieure à une autre

Inspire toi du code du validateur Zend 'GreaterThan', tu as juste à rajouter une comparaison sur les date au lieu de sur deux entiers. Zend_Date a une fonction de comparaison smile

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