Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 12h40   #1
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 261
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 261
Points : 30
Points : 30
Par défaut 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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
// 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?
absot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 13h03   #2
Membre confirmé
 
Avatar de DarkSeiryu
 
Homme Mickaël
Développeur Web
Inscription : janvier 2009
Messages : 408
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 23
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2009
Messages : 408
Points : 234
Points : 234
Envoyer un message via MSN à DarkSeiryu
Salut !

Je ne sais pas si il existe une solution toute faite avec Zend, mais au pire tu peux faire la comparaison toi-même au moment de la validation de ton formulaire en convertissant tes deux dates en timestamp.

Code :
1
2
3
4
5
6
7
$dateDeb = new Zend_Date($laDateDebSaisie); // Création de ta date de début avec Zend_Date.
$dateFin = new Zend_Date($laDateFinSaisie); // Création de ta date de fin avec Zend_Date.
 
// Tu convertis en timestamp ces deux dates et tu les compares.		
if ($dateFin->get(Zend::TIMESTAMP) < $dateDeb->get(Zend::TIMESTAMP)) {
	// Tu indiques l'erreur.
}
A partir de ça, tu pourrais même faire ton propre Zend_Validate (vraiment utile que si tu comptes faire cette vérif' à plusieurs endroits de ton site ^^).

Tu peux aussi faire une vérif' JavaScript sur l'évenement submit du formulaire. Ce qui serait recommandé, histoire de ne pas interroger le serveur pour une simple vérification de donnée. Après, il faut quand même une vérif' côté serveur des fois que l'utilisateur désactive le JS.

DarkSeiryu

EDIT : Hum, j'aurais du chercher avant de répondre au lieu de faire l'inverse... 'fin bon, ça change pas grand chose mais pour comparer des dates, tu as des fonctions toutes faites dans Zend_Date. Je t'invite à lire la documentation.
DarkSeiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 19h31   #3
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonjour,
Il faut que tu fasses ton propre validateur avec la comparaison de date fournis dans le post précédent
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h04.


 
 
 
 
Partenaires

Hébergement Web