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 perso, passer un paramètre [2.x]


Sujet :

Symfony PHP

  1. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut Validator perso, passer un paramètre
    Bonjour,

    Dans mon développement je crées mes propre validateurs, jusqu'a présent tout fonctionne.

    Ici je dois passer un paramètre de mon entity et dans ce contexte je ne peut passer d'objet !

    Voici mes classe

    BeforeDate
    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
    16
    17
     
    <?php
     
    namespace MaitrePylos\Validator\Constraints ;
     
    use Symfony\Component\Validator\Constraint;
     
    class BeforeDate extends Constraint {
     
        public $message = 'La date de fin ne peut-être inférieur à la date de début ! ' ;
        public $date ;
     
        public function __construct($date){
            $this->date = $date;
        }
    }
    ?>

    BeforeDateValidator
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    namespace MaitrePylos\Validator\Constraints;
     
    use Symfony\Component\Validator\Constraint;
    use Symfony\Component\Validator\ConstraintValidator;
    use Symfony\Component\Validator\Exception\UnexpectedTypeException;
     
    class BeforeDateValidator extends ConstraintValidator {
     
        public function isValid($value, Constraint $constraint) {
     
     
     
            if($value->format('Ymd') < $constraint->date->format('Ymd')){
     
                $this->setMessage($constraint->message, array('{{ value }}' => $value));
                return false;
     
            }
     
            return true;
        }
     
    }
     
    ?>
    et dans mon entity

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public static function loadValidatorMetadata(ClassMetadata $metadata) {
     
            $metadata->addPropertyConstraint('dDateFinContrat', new MP\BeforeDate(array('date'=>$this->dDateDebutContrat)));
        }
    ici $this->dDateDebutContrat ne peut être entré dans ce contexte.
    Une idée de comment passer ce paramètre ?

    merci

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Sinon essaie avec un AsserTrue dans ton entité, SF2 lancera la validation sur la méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    /**
     * @Assert\True(message = "invalite_date") 
    */ 
    public function isDateValide() {    
     return $this->startDate < $this->endDate; 
    }

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Merci pour la piste.

    J'ai fait ceci et cela fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public function getDateValide() {
            return $this->dDateDebutContrat < $this->dDateFinContrat;
        }
    Ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public static function loadValidatorMetadata(ClassMetadata $metadata) {
     
            $metadata->addGetterConstraint('DateValide', new Assert\True(array('message'=>'La date de fin de contrat ne peut être inférieur à la date de Début de contrat ')));
     
     
        }

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/12/2004, 12h01
  2. passer des paramétres à un fichier sql
    Par vbcasimir dans le forum Oracle
    Réponses: 2
    Dernier message: 21/12/2004, 18h08
  3. Passer en paramètre d'une fonction (...)
    Par Captain_JS dans le forum C++
    Réponses: 5
    Dernier message: 03/11/2004, 07h18
  4. Passer en paramètre un chemin dans redirection
    Par croco83 dans le forum ASP
    Réponses: 5
    Dernier message: 07/05/2004, 08h30
  5. [struts] passer un paramètre de page via un findForward
    Par Boosters dans le forum Struts 1
    Réponses: 4
    Dernier message: 08/03/2004, 17h35

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