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 :

Validator StartDate EndDate Symfony [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut Validator StartDate EndDate Symfony
    Bonjour,

    J'écris ce post car je me heurte à un problème pour la validation d'un formulaire sous symfony, j'ai deux champs : start_date et end_date et j'aimerais récupérer la valeur du champs start_date rentré par l'utilisateur pour spécifier une valeur minimale au end_date (par exemple end_date >= (start_date+2mois)) et sous symfony je peux spécifier une end_date minimale en fonction de la date actuelle mais pas en fonction de la date rentrée dans le start_date, voici le code que j'ai actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //widget du startDate
    $this->widgetSchema['start_date'] = new sfWidgetFormJQueryDate(array('image' => '/images/calendar.png', 'date_widget' => $dateWidget));
     
    //validator du startDate
    $this->validatorSchema['start_date'] = new sfValidatorDate(array("min" => strtotime("-1 day")), array("min" => "La date doit être supérieure à %min%"));
     
    //widget du endDate
    $this->widgetSchema['end_date'] = new sfWidgetFormJQueryDate(array('image' => '/images/calendar.png', 'date_widget' => $dateWidget));
     
    //validator du endDate
    $this->validatorSchema['end_date'] = new sfValidatorDate(array("min" => strtotime("+60 days")), array("min" => "La date doit être supérieure à %min%"));
    Si quelqu'un à une idée pour concevoir ce genre de validateur je suis preneur parce que là je galère un peu...

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Il faut utiliser un postvalidateur, lui seul aura accès aux données de plusieurs validateurs.

    Donc, le validateur pour chaque dates pour vérifier qu'elles sont saisie, qu'elles sont des dates...

    Et après, le postvalidateur qui va vérifier que l'une est bien postérieur à l'autre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Il faut utiliser un postvalidateur, lui seul aura accès aux données de plusieurs validateurs.

    Donc, le validateur pour chaque dates pour vérifier qu'elles sont saisie, qu'elles sont des dates...

    Et après, le postvalidateur qui va vérifier que l'une est bien postérieur à l'autre.
    Bonjour michel,

    J'avais déjà regardé du côté des postvalidator avec les sfValidatorSchemaCompare mais je ne peux pas faire d'opérations dessus.. Et c'est justement ce qui m'intéresserai, j'ai essayé de récupéré la date dans le postvalidateur et de la visualisé en timestamp pour pouvoir donner à la enddate la valeur minimale que l'utilisateur doit rentré mais sans succès...

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    En relisant ta demande je me pose plusieurs questions.

    Tu veux afficher la date en directe sur la page en fonction de la date saisie ? Si oui, c'est du côté de javascript qu'il va falloir jouer.

    Tu veux garantir que la deuxième date saisie est bien entre moins deux et moins trois mois ? Alors c'est plutôt un validateur dédié qu'il faudra mettre en œuvre.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Par défaut
    Non je ne veux pas le faire en javascript car si le plugin est mis à jour le travail sera perdu et ce n'est pas ce que je recherche de toute façon.

    Ce que je veux c'est pouvoir faire quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $this->validatorSchema->setPostValidator(
    new sfValidatorSchemaCompare('end_date', sfValidatorSchemaCompare::GREATER_THAN, 'start_date+Xjours',
    array('throw_global_error' =>true),
    array('invalid' => 'The end date %left_field% must be grater than %right_field%')));
    Bien sur j'ai essayer d'inséré un strtotime à la place de 'start_date+Xjour' mais sans succès c'est pour cela que j'ai mis la demande sur le forum.

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le sfValidatorSchemaCompare ne peut se trouver que dans un PostValidator, si non, il n'aura pas accès à tous le champs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] validation de champs dépendant en symfony (sfFilterForm)
    Par aza806 dans le forum Symfony
    Réponses: 19
    Dernier message: 09/01/2012, 18h39
  2. [1.x] erreur Symfony sur la validation de formulaire
    Par orzhov dans le forum Symfony
    Réponses: 2
    Dernier message: 24/05/2011, 17h04
  3. [1.x] Validator Formulaire Symfony
    Par smusta dans le forum Symfony
    Réponses: 2
    Dernier message: 21/04/2009, 20h31
  4. SQL : Startdates et Enddates
    Par Lemuel dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/11/2008, 15h19
  5. [1.x] Validation conditionnelle avec Symfony
    Par MacReiben dans le forum Symfony
    Réponses: 1
    Dernier message: 17/07/2008, 13h25

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