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 :

pb buildViolation() on null


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 131
    Par défaut pb buildViolation() on null
    Bonjour,

    Voila je rencontre un petit problème avec mon code.

    j'ai créé un service validator
    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
    29
    30
    31
    32
    class CodeValidator extends ConstraintValidator
    {
        private $requestStack;
        private $em;
     
     
        public function __construct(RequestStack $requestStack, EntityManagerInterface $em)
        {
            $this->requestStack = $requestStack;
            $this->em           = $em;
        }
        /**
         * Checks if the passed value is valid.
         *
         * @param mixed $value The value that should be validated
         * @param Constraint $constraint The constraint for the validation
         */
        public function validate($value, Constraint $constraint)
        {
            $request = $this->requestStack->getCurrentRequest();
            $token = $request->attributes->get('token');
     
            $user = $this->em
                ->getRepository('UserBundle:User')
                ->findOneBy(array('confirmationToken'=>$token));
            $code =  $user->getPasswordTmp();
     
            if($value != $code)
                $this->context->buildViolation($constraint->message)
                      ->addViolation();
        }
    }
    Dans mon contrôleur je passe a validate les paramètre
    voici le code de la contante:
    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
    use Symfony\Component\Validator\Constraint;
     
    class Code extends Constraint
    {
        public $message = "Votre code n'est pas valide.";
     
        public function validatedBy()
        {
            return get_class($this).'Validator';
        }
        public function getTargets()
        {
            return self::CLASS_CONSTRAINT;
        }
    }
    voici se que j'ai m'y pour le service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        app.form.validator.code:
            class: UserBundle\Services\Validator\CodeValidator
            arguments: [@request_stack, @doctrine.orm.entity_manager]
            tags:
                - { name: validator.constraint_validator, alias: app_form_validator_code }
    et sa me retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function buildViolation() on null

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            if($value != $code) {
                $this->context->buildViolation($constraint->message)
                      ->addViolation();
     
                dump($constraint->message);
                dump($this->context);
                exit;
        }
    ça donne quoi ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 131
    Par défaut
    CodeValidator.php on line 45:
    "Votre code n'est pas valide."
    CodeValidator.php on line 46:
    null

    null pour dump($this->context);

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Et si on met comme çà ?
    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
     
     
    use Symfony\Component\Validator\Constraint;
    use Symfony\Component\Validator\ConstraintValidator;
     
    class CodeValidator extends ConstraintValidator
    {
         ///
         public function validate($value, Constraint $constraint) {
            $request = $this->requestStack->getCurrentRequest();
            $token = $request->attributes->get('token');
             $user = $this->em  ->getRepository('UserBundle:User')   ->findOneBy(array('confirmationToken'=>$token));
             if(! $user){   throw new \Exception("No user found  for this token '"); }
             $code =  $user->getPasswordTmp();
     
            if($value != $code){
                $this->context->addViolation($constraint->message);          
             }
        }
    }

  5. #5
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    null pour dump($this->context);
    le problème est là. le context est à null donc tu peux rien faire dessus.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 131
    Par défaut
    oui mais alors que faire ?

Discussions similaires

  1. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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