Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
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 16/06/2011, 11h11   #1
Futur Membre du Club
 
Homme Mickael
Étudiant
Inscription : novembre 2008
Messages : 66
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 66
Points : 15
Points : 15
Par défaut PostValidator d'un sfWidgetFormDate

Bonjour je voudrais savoir comment il m'est possible d'établir une vérification à postériori sur une date obtenue par un sfWidgetFormDate ?
Cette date ne doit pas être antérieure à la date actuelle de remplissage du formulaire ; un test sur created_at ne fonctionne pas étant donné que cette valeur est indiquée après validation du formulaire soumis.
Indiquer 'now' comme pour la valeur par defaut du champ ne fonctionne pas semblerait-il.
Mon code ici présent ne fonctionne tout simplement pas : le 'nom' renvoie une valeur vide.

Code :
1
2
3
4
5
6
$this->validatorSchema->setPostValidator(
        new sfValidatorSchemaCompare('delay', sfValidatorSchemaCompare::LESS_THAN_EQUAL, 'now',
        array(),
        array('invalid' => 'La date butoire ("%left_field%") doit être supérieur à la date d\'aujoud\'hui ("%right_field%")')
      )
    );

Je m'en remet à vous pour m'aider.
Cordialement, Mickael
mixka13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 11h31   #2
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Et en utilisant les options du validateur, ça ne marche pas ? Quelque chose comme :
Code :
1
2
 
$this->validatorSchema['madate']->setOption('min', strtotime("+1 day"));
en adaptant le timestamp selon ta contrainte (+24 heures, jour calendaire suivant, etc...)

PS : pas de 'e' à 'butoir'
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h02   #3
Futur Membre du Club
 
Homme Mickael
Étudiant
Inscription : novembre 2008
Messages : 66
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 66
Points : 15
Points : 15
Merci pour ta réponse rapide, elle résout mon problème, je l'ai néanmoins adapté à mes besoins comme ceci, en espérant que cela pourra aussi aider d'autres personnes en difficulté.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// dans la fonction configure
$this->widgetSchema["delay"] = new sfWidgetFormDate(array("format" => '%day%/%month%/%year%', "months" => array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"), "years" => self::getNextYears(5)) );
$this->validatorSchema["delay"] = new sfValidatorDate(array("min" => strtotime("+0 day")), array("min" => "La date doit être supérieur à %min%"));
 
 
// et dans ma classe de form
protected function getNextYears($number) {
      $year = date('Y', time());
      $years = array();
      for($i = 0 ; $i < $number ; $i++)
        $years[$year+$i] = $year+$i;
 
      return $years;
  }
mixka13 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 21h29.


 
 
 
 
Partenaires

Hébergement Web