Partage
  • Partager sur Facebook
  • Partager sur Twitter

[CodeIgniter] Redirection avec variable flashdata

flashdata

Sujet résolu
    26 mai 2017 à 12:34:03

    Bonjour,

    Voici mon problème :

    J'ai crée une page pour éditer les informations de mes utilisateurs (CodeIgniter/index.php/users/edit/22 par exemple) or lorsque je fini l'édition, je n'arrive pas à rediriger vers CodeIgniter/index.php/users sans utiliser la fonction redirect('', 'refresh'); dans le controlleur.

    J'ai trouvé une autre solution qui consiste à appeler ma vue principale avec $this->smarty->view(); , ça fonctionne c'est à dire qu'après l'édition de mon utilisateur je suis redirigé vers ma page d'accueil /users seulement l'url reste CodeIgniter/index.php/users/edit/22, ce qui est très moche.

    Ainsi pouvez-vous m'éclairez, comment éditer mon utilisateur depuis CodeIgniter/index.php/users/edit/22 et une fois fini, être redirigé vers la page /users tant au niveau de la vue que de l'url ?

    Merci d'avance !

    EDIT : en fait j'ignorais les flashdata à ce moment là de mon développement

    -
    Edité par odk346 28 mai 2017 à 18:32:41

    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2017 à 12:41:23

      Bonjour,

      J'utilise moi même codeigniter, et il est vraiment fantastique. 

      Si j'ai bien compris ton problème tu souhaites qu'une fois que l'utilisateur a modifié son profil il soit redirigé vers la page user ?

      Essai ceci

      <?php
      redirect('/user');
      ?>

      Parce que c'est la méthode a utilisé ce que tu utilises avec la fonction redirect

      -
      Edité par Myster♣ 26 mai 2017 à 12:42:51

      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2017 à 12:44:21

        Salut Myster♣,


        Justement c'est ce que je fais actuellement or, d'une c'est moche de rediriger comme ça je trouve et de deux j'aimerais en plus passer des paramètres lorsque la modification a été réalisée. Avec redirect() je ne peux pas c'est bien ça ? Par exemple un message comme quoi la modification s'est bien réalisée.

        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2017 à 12:48:30

          Justement c'est là que je coince aussi moi .. Du coup j'utilise des GET dans l'url genre ?editprofil=1 

          Puis je fait une petite condition que si la variable GEt editprofil=1 alors j'affiche un message.

          Et tu peux aussi mettre des variables avec la fonction redirect du genre redirect('/user/'.$user_id.'');

          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2017 à 12:51:20

            J'aimerais éviter ça à tout prix.

            Si quelqu'un à une autre idée, merci d'avance !

            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2017 à 12:53:59

              Mais je pense avoir trouvé 

              Regarde au niveau de flashdata la fonction, tape sur google flashdata redirect codeigniter :)

              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2017 à 13:05:55

                Ah oui pas mal ! Je viens de regarder par contre j'utilise Smarty comme moteur de template, tu saurais comment récupérer la variable flashdata ?

                EDIT :

                J'ai donc ça :

                public function edit($id) {
                
                  [...]
                
                 $this->session->set_flashdata('flsh_success', 'Modification effectuée !');
                
                 redirect("/users#$id");
                
                }

                Mais je n'arrive pas à récupérer la valeur de flsh_success sur ma vue... une idée ?

                -
                Edité par odk346 26 mai 2017 à 13:32:01

                • Partager sur Facebook
                • Partager sur Twitter
                  26 mai 2017 à 13:35:38

                  Pour cela il faut l'assigner à Smarty 

                  Donc tu fais par exemple

                  $message = $this->session->set_flashdata('flsh_success', 'Modification effectuée !');
                  

                  Et ensuite en dessous

                  $this->smarty->assign('messagesuccess', $message);

                  Et tu l'appelle dans smarty {$messagesuccess}


                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 mai 2017 à 13:39:41

                    Hmmm, oui mais du coup vu qu'après l'assign je fais un redirect, je perds cette variable (messagesuccess).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 mai 2017 à 13:46:02

                      Ah oui effectivement, là je t'avoue que je sèche du coup
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 mai 2017 à 13:54:07

                        Rah moi aussi, c'est mal fais dis donc
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 mai 2017 à 18:30:57

                          Après quelques bidouillage j'ai réussi à utiliser les flashdata. Si ça vous intéresse :

                          J'ai changé le type des sessions et je suis passé au format database mais je pense pas que ça y fait quelque chose.

                          Depuis le controlleur pour éditer mon user, je créer ma flashdata ainsi :

                          $this->session->set_flashdata('flsh_mess', "votre message ici"); // génération flashdata
                          redirect("/users"); // redirection

                          et sur la page /users je récupère la variable, mais au préalable dans le controlleur de la page users j'ai ceci :

                          $data['sess']=$this->session->userdata;
                          
                          [...]
                          
                          $this->smarty->view( 'users.tpl', $data );

                          et sur ma vue smarty j'affiche le message comme ceci :

                          {$sess.flsh_mess}

                          Enjoy !

                          • Partager sur Facebook
                          • Partager sur Twitter

                          [CodeIgniter] Redirection avec variable flashdata

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown