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 :

Symfony 2: retour vers la page précédente après un update [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Symfony 2: retour vers la page précédente après un update
    Bonjour à tous,

    Je souhaite réaliser une retour vers la page précédente une fois l'update réalisé.
    A l'heure actuelle, mon update est réalisé via:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    /**
         * Displays a form to edit an existing Comment entity.
         *
         * @Route("/{id}/edit", name="site_front_comment_edit")
         * @Method("GET")
         * @Template()
         */
        public function editAction($id) {
            $em = $this->getDoctrine()->getManager();
     
            $entity = $em->getRepository('SiteFrontBundle:Comment')->find($id);
     
            if (!$entity) {
                throw $this->createNotFoundException('Unable to find Comment entity.');
            }
     
            $editForm = $this->createEditForm($entity);
            $deleteForm = $this->createDeleteForm($id);
     
            return $this->render('SiteFrontBundle:Comment:edit.html.twig', array(
                        'entity' => $entity,
                        'edit_form' => $editForm->createView(),
                        'delete_form' => $deleteForm->createView(),
            ));
        }
     
        /**
         * Creates a form to edit a Comment entity.
         *
         * @param Comment $entity The entity
         *
         * @return \Symfony\Component\Form\Form The form
         */
        private function createEditForm(Comment $entity) {
            $form = $this->createForm(new CommentType(), $entity, array(
                'action' => $this->generateUrl('site_front_comment_update', array('id' => $entity->getId())),
                'method' => 'PUT',
            ));
     
            $form->add('submit', 'submit', array('label' => 'Modifier', 'attr' => array('class' => 'btn btn-success')));
     
            return $form;
        }
     
        /**
         * Edits an existing Comment entity.
         *
         * @Route("/{id}", name="site_front_comment_update")
         * @Method("PUT")
         * @Template("SiteFrontBundle:Comment:edit.html.twig")
         */
        public function updateAction(Request $request, $id) {
            $em = $this->getDoctrine()->getManager();
     
            $entity = $em->getRepository('SiteFrontBundle:Comment')->find($id);
     
            if (!$entity) {
                throw $this->createNotFoundException('Unable to find Comment entity.');
            }
     
            $deleteForm = $this->createDeleteForm($id);
            $editForm = $this->createEditForm($entity);
            $editForm->handleRequest($request);
     
            if ($editForm->isValid()) {
                $em->flush();
     
                return $this->redirect($this->generateUrl('site_front_comment_edit', array('id' => $id)));
            }
     
            return array(
                'entity' => $entity,
                'edit_form' => $editForm->createView(),
                'delete_form' => $deleteForm->createView()
            );
     
        }
    Petite précision: la page précédente appartient à un autre contrôleur.

    Merci pour votre aide ;-)

  2. #2
    Membre expert
    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
    Points : 3 004
    Points
    3 004
    Par défaut
    yoooooOOOOOOOOOOOOO man ,


    faut faire pointer l'action de ton form vers l'endroit ou tu veux qu'il aille, tout simplement.

  3. #3
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Salut,

    Je suis pas d'accord avec toi dukoid.
    L'action dans le formulaire envoie les variables du formulaire ($_POST) vers la page qui va faire le traitement de c'est infos.
    Du coup le mieux à faire c'est mettre à la fin de tes traitements une redirection !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php      
      header('Location: mapage.php');      
    ?>
    Comme ça une fois que les traitements sont fait, paf il redirige l'utilisateurs vers la page que tu veux !
    Mais je connais pas très bien Symfony.
    Si c'est du MVC tu peux mettre le traitement de ton formulaire dans le controller de la vu associer a l'action envoyé dans le formulaire (Comme a dis dukoid)

    Remarque : Il faut qu'il y est aucun code html avant ta redirection !
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Je suppose que ta problématique est que l'utilisateur peut arriver sur l'url "comment/edit/21" à partir de diverses url tels que
    - "comment/list"
    - "comment/list/?filter=search&order=createdAt"
    - "comment/show/21".
    Tu souhaites donc le rediriger d'ou il vient une fois le formulaire validé.

    Pour ce genre de cas, je passe par un champ caché dans le formulaire qui est prérempli par l'url précédente.
    Cette valeur sera transmise en POST avec le reste du formulaire.
    Une fois le formulaire est valide, tu peux faire tes traitements puis rediriger vers l'url d'origine

    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
     
    class MonController{
        private function createAction(){
           //....
           if($form->isValid()){
              //...
              return $this->redirect($form->get('redirect_url')->getData());
           }
           //...
        }
     
         private function createCreateForm(Book $entity)
        {
           //...
            $form->add('redirect_url', 'hidden', array(
                'mapped' => false,//parce qu'il n'y a pas d'attribut "redirect_url" dans ton entité
                'data'=>$this->getRequest()->server->get('HTTP_REFERER') // valeur par défaut = l'url précédent l'affichage du formulaire
            ));
            //...
        }
    }

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci à tous d'avoir répondu.
    La bonne technique est celle donnée par arnooo999 , cela fonctionne parfaitement.

    Merci ;-)

  6. #6
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Salut,

    Ca fait longtemps mais je suis tombé sur le topic après une recherche Google. Il y a une meilleur méthode, plus rapide, simple et sans passer par l'envoie de l'url depuis le formulaire.
    Suffit de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return $this->redirect($_SERVER['HTTP_REFERER']);
    ça permet donc de faire une redirection vers la dernière page visité

    En espérant que ça puisse aider des personnes.
    Bon courage.
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

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

Discussions similaires

  1. redirection vers la page précédente après connexion
    Par amine2208 dans le forum Langage
    Réponses: 5
    Dernier message: 26/03/2013, 01h10
  2. [AJAX] Retour a une page précédente
    Par HWICE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2007, 14h48
  3. Réponses: 9
    Dernier message: 01/04/2007, 10h10
  4. Réponses: 13
    Dernier message: 25/05/2006, 04h13
  5. retour vers une page inexistante
    Par ph_anrys dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2006, 00h09

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