IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

PostValidator d'un sfWidgetFormDate


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 71
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Et en utilisant les options du validateur, ça ne marche pas ? Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 71
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
      }

Discussions similaires

  1. [1.x] sfWidgetFormDate setDefault
    Par wind_of_o dans le forum Symfony
    Réponses: 6
    Dernier message: 26/01/2012, 16h03
  2. [1.x] FormFilter avec postValidator personalisé
    Par aza806 dans le forum Symfony
    Réponses: 7
    Dernier message: 17/01/2012, 18h35
  3. [1.x] Initialiser une sfWidgetFormDate
    Par Herode dans le forum Symfony
    Réponses: 3
    Dernier message: 03/02/2010, 22h50
  4. Réponses: 2
    Dernier message: 29/05/2009, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo