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 :

[Propel] Formulaire - GlobalError [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut [Propel] Formulaire - GlobalError
    Bonjour à tous,

    Je développe depuis 2 mois avec Symfony. J'ai utilisé un bon nombre de formulaire, mais là je rencontre une erreur inconnue.

    Situation :

    J'ai un formulaire d'une dizaine de champ. La fonction configure du formulaire est vide (ce qui appel celle de la base). Avec une autre fonction je met à jour mon formulaire.

    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
     
    public function configure(){}
     
    public function update(){
     
      // suppression des champs inutiles	
      unset(
        $this['a'],
        ...
        $this['b']
      );
     
      $this->widgetSchema['c'] = new sfWidgetFormTextarea();
      $this->validatorSchema['c'] =  new sfValidatorString(array('required'=>false));
    }
    Lorsque j'essaye de valider mon formulaire, il existe une erreur qui ne le valide pas. Cette erreur n'est pas dû au champ (qui est facultatif) mais à une erreur global.

    J'affiche l'erreur avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ul class="error_list">
      <?php if ($form->hasGlobalErrors()):?>
        <?php foreach ($form->getGlobalErrors() as $name => $error): ?>
          <li><?php echo $name.': '.$error ?></li>
        <?php endforeach; ?>
      <?php endif;?>
    </ul>
    J'ai bien entendu dans mon template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $form->renderHiddenFields();?>
    Avec FireBug, je retrouve bien mon champ _csrf_token, et mon champ c.

    L'erreur affichée est "Required". Je n'arrive pas à savoir l'origine de l'erreur.

    Si quelqu'un a une idée c'est le moment

    Merci d'avance

    Junta13

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut
    Comme cela ça me semble totalement impossible de te trouver la solution. Par contre ce que tu peux faire c'est dans ton action une fois que tu as bind ton formulaire afficher le errorSchema.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump($form->getErrorSchema());exit;
    Ca t'afficheras toutes les erreurs retourné par ton formulaire et tu pourras voir quel validateur te retourne un "required."

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    Merci d'avoir répondu,

    j'ai suivi ton conseil et alors la réponse est magique.

    pour reprendre l'exemple ci-dessus, j'ai 3 champs a b et c;

    j'unset a et b et je garde c qui est facultatif, jusqu'ici rien de nouveau.

    En affichant $form->getErrorSchema(), j'ai " b [Required.] ". Pourtant le champ b est bien unset.

    j'ai essayé d'afficher le champ b et je me retrouve avec une erreur (ce qui est normal car il n'existe pas).

    bref je suis toujours coincé sur ce problème.

    ...

    J'ai trouvé

    en faite, avant de faire le bind, je testais si $request->getParameter('monForm[a]) != quelque chose et comme cela retournait vrai car $request->getParameter('monForm[a]) était null, j'ajoutais un validator sur b.

    en tout cas merci pour la fonction, je n'avais pas pensé à l'utiliser.

    La solution au problème est de relire son code

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

Discussions similaires

  1. [1.x] [symfony 1.4.x][propel] Formulaires imbriqués
    Par Djillian dans le forum Symfony
    Réponses: 5
    Dernier message: 04/04/2011, 16h55
  2. [propel]Compter TextArea d'un formulaire
    Par Djillian dans le forum ORM
    Réponses: 4
    Dernier message: 03/03/2011, 17h09
  3. [1.x] [Propel] Édition d'un formulaire
    Par RaphTal dans le forum Symfony
    Réponses: 1
    Dernier message: 07/08/2009, 16h47
  4. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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