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

 PHP Discussion :

Problème de validateur : $value vide dans doClean()


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2009
    Messages : 38
    Par défaut Problème de validateur : $value vide dans doClean()
    Bonjour,

    J'ai un problème avec ma méthode doClean($value) dans un validateur : la variable value est en effet vide lorsque la méthode est appelée.

    Voici mon code :

    sfValidatorCheckUsers.php :
    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
    <?php
     
    class sfValidatorCheckUsers extends sfValidatorString
    {
        protected function configure($options = array(), $messages = array())
        {
            parent::configure();
        }
     
        protected function doClean($value)
        {
            $usernames = parent::doClean($value);
            $list = explode("\n", $usernames);
            foreach ($usernames as $username) {
                if (!UserTable::getInstance()->userExist($username)) {
                    throw new sfValidatorError($this, 'Le membre "'.$username.'" n\'existe pas. Value vaut : '.$usernames);
                }
            }
     
            return $usernames;
        }
     
        public function isEmpty($value)
        {
            throw new sfValidatorError($this, 'Aucun membre spécifié');
        }
    }
    ConversationPriveeForm.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public function configure()
        {
            $this->widgetSchema['participants_list'] = new sfWidgetFormTextarea();
            $this->validatorSchema['participants_list'] = new sfValidatorCheckUsers();      
            $this->mergeForm(new MessagePriveForm());
     
            $this->widgetSchema->setNameFormat('conversation[%s]');
        }
    Savez-vous pourquoi ma variable $value est vide ?

    Merci d'avance

  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
    Elle est vide à l'entrée ou après l'appel de la méthode parent ?

    Es-tu sur que le bind ce soit correctement passé ? Y a-t-il bien des données dedans après ce bind ?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2009
    Messages : 38
    Par défaut
    $values est vide avant l'appel à la m&thode parente, oui.

    Le bind, le voici (à vrai dire, je ne l'ai pas touché, c'est du code généré, c'est sûrement là que le problème a lieu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        protected function processForm(sfWebRequest $request, sfForm $form)
        {
            $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
     
            if ($form->isValid()) {
                $conversation_privee = $form->save();
                $this->redirect('messagerie/edit?id='.$conversation_privee->getId());
            }
        }
    Une petite explication sur les paramètres de cette méthode serait bienvenue d'ailleurs...

  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
    La doc dit :
    bind ($taintedValues, $taintedFiles) Browse code

    $taintedValues An array of input values $taintedFiles An array of uploaded files (in the $_FILES or $_GET format) Binds the form with input values.

    It triggers the validator schema validation.
    Vérifie dans le $request->getParameters() ce qu'il retourne dans le tableau, il est possible que ta valeur ne soit pas "fomatée" de la même manière que les autres, surtout au niveau du nom de la variable.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/06/2008, 14h10
  2. Problème de champ vide dans une base sql
    Par lionel256 dans le forum VB.NET
    Réponses: 13
    Dernier message: 16/04/2008, 18h07
  3. Problème éléments vides dans du XML sous VB6
    Par matteli dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/11/2007, 17h01
  4. [XSLT][débutant] Problème xsl:value-of dans xsl:for-each
    Par Choubie dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/05/2007, 17h30
  5. [XSLT] Problème de ligne vide dans le flux de sortie
    Par Guillaume.chatel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 07/02/2007, 10h57

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