Comment transmettre une variable d'une vue à une autre

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Comment transmettre une variable d'une vue à une autre

    Bonjour,

    Je vous expose brièvement mon problème :

    Je crée un composant joomla 1.5, dans lequel une des vues récupère dans une variable $oXML des données au format xml (grâce à son modèle).

    Maintenant, l'étape qui est bloquante pour moi c'est que je ne sais pas comment transmettre cette variable à une autre vue qui en a besoin.

    Dailleurs, je ne sais pas comment appeller cette vue (appellons la vue2) à partir de vue1.

    J'imagine que pour ceux qui sont familier avec le MVC Joomla, cette question coule de source, mais moi je patauge là

    Merci pour toute l'aide que vous pourriez m'apporter.

  • #2
    Re : Comment transmettre une variable d'une vue à une autre

    généralement tu appelles les vues avec la variable 'view' et 'layout' dans l'url, et tu peux alors y passer ta variable en GET dans l'url ou alors tu la mets dans un champ hidden qui sera envoyé en POST. ca répond à ta question ?
    Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
    http://www.template-creator.com Outil de création de templates
    Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

    Commentaire


    • #3
      Re : Comment transmettre une variable d'une vue à une autre

      Merci de m'avoir répondu,

      en fait cette variable $oXML est un objet PHP contenant de nombreux champs, donc je ne peux pas la passer par une variable hidden.

      J'ai réfléchi à mon problème et j'imagine trois solutions :

      1) faire de cette variable une donnée membre du model1 associé à la view1 qui le créé, puis y accéder depuis la vue2, en faisant un getModel('model1')->oXML. Mais ça ne semble pas fonctionner, ou alors je m'y prends mal

      2) view1 la retransmet au contrôleur par un moyen que j'ignore, qui lui va la retransmettre a view2 (comment ? aucune idée :s)

      3) Faire de cette variable une espèce de variable globale à laquelle toutes les vues peuvent accéder.

      Voilà les pistes de réflexion que j'ai actuellement, et aucune ne me convient vraiment.

      De plus, je n'arrive pas à trouver des tutoriels vraiment complets (plus que ceux du com_auto ou com_hello) qui traitent de cette problématique de "passer d'une vue à l'autre avec transmissions de variables php 'complexes' (non issues d'un formulaire)".

      Mes remerciements d'avance pour toute piste d'éclaircissement.

      Commentaire


      • #4
        Re : Comment transmettre une variable d'une vue à une autre

        en fait cette variable $oXML est un objet PHP contenant de nombreux champs, donc je ne peux pas la passer par une variable hidden.
        alors pour passer des arrays ou objets j'utilise JSON, j'encode d'un coté pour passer la variable complexe devenue string, et de l'autre coté je récupère la variable et je décode
        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
        http://www.template-creator.com Outil de création de templates
        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

        Commentaire


        • #5
          Re : Comment transmettre une variable d'une vue à une autre

          Merci, je vais essayer de voir si cela peut être fait en ce qui me concerne, même si cette chaîne de caractère (contenant le code d'une liste d'articles, potentiellement extrêmement longue si j'en fais une seule chaîne de caractère).

          N'y a-t-il pas d'autre moyen que des variables get ou post pour passer une variable php d'une vue à une autre ?

          Commentaire


          • #6
            Re : Comment transmettre une variable d'une vue à une autre

            bah perso j'utilise les POST elles sont faites pour ça et acceptent les chaines longues contrairement au GET. S'ils y a d'autres solutions c'est possible, mais bon moi je te donne ma méthode
            Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
            http://www.template-creator.com Outil de création de templates
            Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

            Commentaire


            • #7
              Re : Comment transmettre une variable d'une vue à une autre

              Envoyé par tyreks Voir le message
              N'y a-t-il pas d'autre moyen que des variables get ou post pour passer une variable php d'une vue à une autre ?
              D'une requête http à une autre : sauve ta variable $oXML en session.

              Lors du traitement d'une même requête http : récupère une instance du modèle $model dans la vue_2 et utilise la même méthode $model->getOXML(); pour récupérer ta variable. Il faut que la méthode getOXML() stocke le résultat du calcul dans une propriété du model lors du premier appel, c'est ce résultat qui est renvoyé lors des appels suivants (sans re-calcul)...

              -Fly06_Fr
              Fly06_Fr (http://www.fly06.fr/)
              -------------------------------------------
              Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

              Commentaire


              • #8
                Re : Comment transmettre une variable d'une vue à une autre

                Envoyé par Fly06_Fr Voir le message
                D'une requête http à une autre : sauve ta variable $oXML en session.

                Lors du traitement d'une même requête http : récupère une instance du modèle $model dans la vue_2 et utilise la même méthode $model->getOXML(); pour récupérer ta variable. Il faut que la méthode getOXML() stocke le résultat du calcul dans une propriété du model lors du premier appel, c'est ce résultat qui est renvoyé lors des appels suivants (sans re-calcul)...

                -Fly06_Fr
                c'est ce que je pensais aussi mais à priori il agit comme si, lorsque je fais $model1->getModel('vue1') dans ma vue2, sa propriété, à laquelle j'accède par $model1->getOXML(), semble remise à zéro.

                En gros, elle n'est pas stockée, ce qui me semble à peu près logique vu que j'ai l'impression qu'il redéclare l'objet $model1, ce que j'aimerais réussir à faire, c'est faire appel à l'objet $model1 créé par la vue1 (comme une espèce d'appel par référence de cette vue), de façon à pouvoir en récupérer la valeur de sa variable $oXML.

                Je ne sais pas trop si je me fais comprendre, ni même si ce que je cherche à faire est faisable, ou est la bonne façon de faire.

                En tout cas merci à tous ceux qui essaieront de me répondre.

                Commentaire


                • #9
                  Re : Comment transmettre une variable d'une vue à une autre

                  Finalement j'ai contourné le pb en utilisant la solution de Fly_06 (un grand merci à toi, ainsi qu'aux autres d'ailleurs), à savoir mettre la variable en session, mais je reste convaincu qu'il y a une meilleure manière de faire, et je suis toujours preneur d'autres solutions.

                  Commentaire


                  • #10
                    Re : Comment transmettre une variable d'une vue à une autre

                    Ce type de question pourrait ouvrir un début sur les avantages et inconvénients des différents moyens que PHP met à notre disposition. Perso, mes objets réutilisables sont globaux aussi, pas de soucis à les récupérer dans l'une ou l'autre vue. Si tu sais que tu n'en as plus besoin, tu peux faire un unset() pour libérer la mémoire.
                    Christophe (cavo789)
                    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                    Commentaire


                    • #11
                      Re : Comment transmettre une variable d'une vue à une autre

                      Envoyé par tyreks Voir le message
                      Finalement j'ai contourné le pb en utilisant la solution de Fly_06 (un grand merci à toi, ainsi qu'aux autres d'ailleurs), à savoir mettre la variable en session, mais je reste convaincu qu'il y a une meilleure manière de faire, et je suis toujours preneur d'autres solutions.
                      La bonne solution dépend du contexte.

                      Déjà il faudrait savoir si tu souhaites conserver cette variable entre deux requêtes http ou au sein du traitement d'une même requête, c'est pas clair dans ton post initial.

                      -Fly06_Fr
                      Fly06_Fr (http://www.fly06.fr/)
                      -------------------------------------------
                      Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X