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 :

Validation du même formulaire entre deux actions


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Points : 46
    Points
    46
    Par défaut Validation du même formulaire entre deux actions
    reBonjour

    J'ai préféré d'ouvrir un nouveau sujet qui a en relation avec la validation de date que j'ai posté.. et que normalement ça marche bien "Grace à vous".

    Mon problème est le suivant :

    Dans une action executeAjouter()..
    si mon formulaire est valide , je passe à l'action, executeEnregistrer() et dans cette action, j'ai toujour le même formulaire, tout éatant dans cette action je voudrai quand je test si mon formulaire est valide je reviens sur l'action executeAjouter et afficher les erreurs dans la vue de cette dernière, le problème quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Dans l'action executeEnregistrer()
    $this->redirect('Ajouter');
    je reviens sur cette page "Donc la validation est bien prise en compte" mais les erreurs sont pas affichées ..
    J'ai l'impression que c'est comm
    e j'arrive la première fois sur cette page, alors ce n'est pas le fait de valider et de revenir sur le même formulaire..

    J'avais vu déja qu'on peut faire
    et je me demande s'il n'y a pas un moyen de faire
    [CODE]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setNameAction('executeAjouter')
    après test ça marche pas
    Je ne sais pas si c'est explicite.

    Merci beaucoup

    Quelqu'un a une idée?

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Je ne suis pas sur de comprendre exactement ce que tu veux, mais je pense que le "$this->redirect('Ajouter');" est une mauvaise idée.

    Crée plutôt une méthode enregistrement et joint l'objet form à la demande.

    le redirect à pour effet de créer une nouvelle requête web et de réinitialiser le framework... ce qui n'est pas exactement ce que tu souhaites.

    Avec une méthode tu devrais pouvoir réaliser ce que tu souhaites, si non, essaye d'être plus claire dans ce que tu veux faire.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Je ne sais pas si tu l'utilises déjà ou pas, mais tu peux observer le bon fonctionnement de tout ça en étudiant le code généré par l'admin-generator. En particulier les actions :
    - executeNew
    - executeCreate
    - processForm.

    Cette génération est très utile et t'évites généralement même de te poser le genre de problème que tu as.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    En fait,

    J'ai deux actions

    executeajouter() qui correspond au template ajouterSucces
    et une autre executeEnregistrer() qui correspond au template enregistrerSucces

    j'utilise le même formulaire dans les deux méthodes,
    l'idée est de quand je suis sur la méthode enregistrerSucces() je teste si mon formulaire n'est pas valide, je reviens sur la methode enregistrer avec les memes paramètre saisie par l'utilisateur

    j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->redirect('ajouter', $this->form);
    Mais comme si symfony m'ignore cette redirection.

    ..Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    C'est ce que j'avais compris

    Mais je réitère ma recommandation d'aller voir le code généré par l'admin-generator. Ce que tu énonces est son fonctionnement classique, et tu pourras y trouver un joli code qui te fait ça !!

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    +1
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Bonjour

    J'ai trouvé un exemple qui explique vraiment mon cas, mais aussi il ne fonctionne pas sur mon appli. voici le lien http://www.miximum.fr/methodes-et-ou...ssages-derreur

    Exactement comme mon cas, je perds les messages d'erreurs lors d'une redirection.

    Mais quand j'ai essayé le bout de code , ça n'a pas marché, je ne sais pas si c'est un problème de version.

    Merci

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Cela peut venir du fait que tu fais un redirect au lieu d'un forward;

    Voir : http://php.developpez.com/faq/?page=...direct-forward

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Mais comment, je recupère dans le cas de forward les erreurs ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    En utilisant les méthodes renderError et renderLabel sur les objets de tes formulaires. Je te mets le contenu type d'un partial de l'admin generator. Ce partial permet d'afficher les éléments d'un 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
    16
    17
    18
    19
    20
    <?php if ($field->isPartial()): ?>
      <?php include_partial('form/'.$name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
    <?php elseif ($field->isComponent()): ?>
      <?php include_component('form', $name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
    <?php else: ?>
      <div class="<?php echo $class ?><?php $form[$name]->hasError() and print ' errors' ?>">
        <?php echo $form[$name]->renderError() ?>
        <div>
          <?php echo $form[$name]->renderLabel($label) ?>
     
          <div class="content"><?php echo $form[$name]->render($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes) ?></div>
     
          <?php if ($help): ?>
            <div class="help"><?php echo __($help, array(), 'messages') ?></div>
          <?php elseif ($help = $form[$name]->renderHelp()): ?>
            <div class="help"><?php echo $help ?></div>
          <?php endif; ?>
        </div>
      </div>
    <?php endif; ?>
    Ce code peut paraître lourd, mais il te fait la totale et est très informatif.

Discussions similaires

  1. passage d'objet entre deux actions
    Par sousoujda2 dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/03/2008, 17h17
  2. Passage d'éléments de formulaire entre 2 actions
    Par Calambo dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/04/2007, 19h16
  3. Réponses: 8
    Dernier message: 13/03/2006, 17h37
  4. Réponses: 8
    Dernier message: 11/03/2006, 18h40
  5. [vector] Partager une même variable entre deux objets.
    Par Ekinoks dans le forum SL & STL
    Réponses: 18
    Dernier message: 25/08/2005, 20h40

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