Remplacer JRequest ?

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

  • Remplacer JRequest ?

    Bonjour à tous,

    Je viens de m'apercevoir que JRequest est "deprecated" et doit être remplacé.

    Dans le plugin LazyDbBackup, j'ai cette ligne :
    $pJform = JRequest::getVar('jform');
    et dans la doc Joomla! je lis ceci :
    JRequest::getVar() is deprecated. Use JFactory::getApplication()->input->get() instead
    Alors, je remplace par :
    $pJForm =JFactory::getApplication()->input->get('jform');
    mais je récupère "NULL" pour $pJForm et le plugin ne lance pas la sauvegarde.

    Pour info, ce test est fait sur la 3.7.0-beta4 sous PHP 7.1.1

    Avez-vous une idée de mon erreur ?
    Merci d'avance,
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Re : Remplacer JRequest ?

    Hello Robert.

    Toujours pas installé XDebug pour pister les variables ?

    Essaie voir :

    Code PHP:
    $input JFactory::getApplication()->input;
    $pForm = new JInput($input->get('jform''''array')); 
    Ensuite tu récupères tes variables de formulaire par un
    Code PHP:
    $toto=$pForm->get('nom_variable','valeur_par_defaud'); 
    Mais tu recuperes un array, on est bien d'accord ?
    Dernière édition par roland_d_alsace à 06/04/2017, 18h40
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Re : Remplacer JRequest ?

      Merci Roland !

      J'ai utilisé var_dump(), et je travaille en ligne.

      Je ne comprends pas pourquoi suivre le conseil de la doc ne résout pas mon problème et l'utilisation du code que tu me conseilles ne corrige pas, seule l'utilisation de $pJform = JRequest::getVar('jform'); est efficace. Cela voudrait dire que si je passe à la nouvelle fonction JInput ou à ce que dit la doc, il va me falloir trouver plus loin quelles autres modifications sont à faire...
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        Re : Remplacer JRequest ?

        Oui, j'ai aussi l’impression que la doc est un peu en retard.

        Je n'ai jamais utilisé la classe Jrequest sur un formulaire fait par JForm.

        Regarde dans ton html, Jform génère des noms au format array, donc le name des balises est du type jform[nom_de_la_balise_dans_le_xml].

        Avec ma méthode, le pForm est toujours null ??
        Cela me surprend...
        ...car normalement cela fonctionne.
        Quand je génère mes champs html avec JForm / JFormField, c'est la méthode que j'utilise pour récupérer les valeurs.

        Après, il ne faut pas paniquer, quand tu regardes dans le core, il y a beaucoup de 'deprecated'
        (selon l'environnement de développement que tu utilises, il y a partout des noms de fonctions barrés...)
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Re : Remplacer JRequest ?

          J'ai en effet beaucoup de mal avec la doc ! Elle n'est pas faite pour les novices.

          Je ne m'étais jamais vraiment intéressé au code de ce plugin, juste fait des retouches pour qu'il soit compatible avec les différentes versions de Joomla!, mais là, ce sont les paramètres du plugin que le code que j'ai cité est censé aller chercher, et mes connaissances sont telles que je me demande pourquoi l'utilisation de "jform" le fait via un JRequest::getVar et pas par la fonction qui la remplace. Et pourquoi utiliser "jform" ?
          En fait, le début du code est celui-ci :
          Code PHP:
          // detect if plugin settings are applied
          $pJform JRequest::getVar('jform'); 

          if(isset(
          $pJform['params']['backupfreq'])){ 
          Le but est donc dans un premier temps de récupérer le paramètre "backupfreq" dans les paramètres du plugin :
          {"site_only":"1","compress":"1","drop_tables":"1", "create_tables":"1","struct_only":"0","locks":"1", "foreign_key":"1","comments":"1","xdays":"1","back uptime":"00:00","backupfreq":"1","backuppath":"\/plugins\/system\/lazydbbackup\/dumps","encrypt":"0","password":"","name_format":" 0","test":"0","sendmail":"1","deletefile":"1","add url":"1","recipient":"******@*****.com","subject": "Database backup","body":"Your database is attached in this mail.","config_bkp":"0","user_bkp":"0","menu_bkp": "0","content_bkp":"0","category_bkp":"0","installe r_bkp":"0","module_bkp":"0","plugin_bkp":"0","temp late_bkp":"0","language_bkp":"0"}
          Je pense donc qu'il va me falloir dans un premier temps réécrire cette récupération des infos...
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #6
            Re : Remplacer JRequest ?

            salut
            $input = JFactory::getApplication()->input;
            $pForm = new JInput($input->get('jform', '', 'array'));
            ça serait plutot :
            $input = JFactory::getApplication()->input;
            $pForm = $input->get('jform', '', 'array');
            ?
            car JFactory::getApplication()->input est l'instance de JInput

            CEd
            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 : Remplacer JRequest ?

              @roland_d_alsace :
              Une réponse que je n'avais pas donnée : avec ton code, j'ai bien eu ce matin une sauvegarde automatique. Par contre, ce qui est bizarre, c'est que les sauvegardes qui se faisaient systématiquement lors de l'ouverture/fermeture du plugin ne se font plus, à moins qu'il y ait un retard dans l'envoi du mail Je vais attendre un peu pour voir ce qui se passe.

              Non, je viens de vérifier en supprimant l'envoi par mail et en vérifiant le fichier de suivi : pas de lancement systématique de la sauvegarde avec ce code
              Code PHP:
              $input JFactory::getApplication()->input;
              $pJForm = new JInput($input->get('jform''''array')); 
              Dernière édition par RobertG à 07/04/2017, 08h27
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Re : Remplacer JRequest ?

                Bon, je crois que j'ai trouvé : avec le code de ced1870 et la correction du nom de la variable de $pJForm en $pJform, la sauvegarde systématique fonctionne de nouveau.

                Reste que je ne comprends toujours pas pourquoi on utilise JForm pour récupérer les paramètres du plugin. Il me semblait qu'il y avait une fonction spécifique pour ça.

                Je vais tester sur la version de développement 4.0 !
                Youpie ! ça fonctionne aussi sur la prochaine version (pour l'instant) !
                Dernière édition par RobertG à 07/04/2017, 08h45
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                Commentaire


                • #9
                  Re : Remplacer JRequest ?

                  correction du nom de la variable de $pJForm en $pJform
                  ah ben c'est sur avec la bonne variable ça marche mieux!
                  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


                  • #10
                    Re : Remplacer JRequest ?

                    En effet !
                    Il va falloir que je change mes lunettes !
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #11
                      Re : Remplacer JRequest ?

                      fais tu copier/coller la prochaine fois, ça évite les erreurs de frappe
                      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


                      • #12
                        Re : Remplacer JRequest ?

                        Oui, j'aurais pu, mais pour un mot si court, c'était aussi rapide de le saisir au clavier...
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #13
                          Re : Remplacer JRequest ?

                          Envoyé par RobertG Voir le message
                          J'ai en effet beaucoup de mal avec la doc ! Elle n'est pas faite pour les novices.

                          Je ne m'étais jamais vraiment intéressé au code de ce plugin, juste fait des retouches pour qu'il soit compatible avec les différentes versions de Joomla!, mais là, ce sont les paramètres du plugin que le code que j'ai cité est censé aller chercher, et mes connaissances sont telles que je me demande pourquoi l'utilisation de "jform" le fait via un JRequest::getVar et pas par la fonction qui la remplace. Et pourquoi utiliser "jform" ?
                          En fait, le début du code est celui-ci :
                          Code PHP:
                          // detect if plugin settings are applied
                          $pJform JRequest::getVar('jform'); 

                          if(isset(
                          $pJform['params']['backupfreq'])){ 
                          Le but est donc dans un premier temps de récupérer le paramètre "backupfreq" dans les paramètres du plugin :

                          Je pense donc qu'il va me falloir dans un premier temps réécrire cette récupération des infos...
                          Euh, là je ne comprend pas.

                          JRequest cherche les infos dans ta requete http, pas dans le parametrage.

                          Pour recuperer le paramétrage d'une extension, c'est plutôt : JComponentHelper::getParams('nom_de_lextension') qu'il faut utiliser.
                          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                          Rejoignez le Joomla Users Groupe Alsace...
                          roland_d_alsace va-t-il devenir roland_du_grand_est ?

                          Commentaire


                          • #14
                            Re : Remplacer JRequest ?

                            Oui, Roland ! c'est bien ce qui m'a chagriné : pourquoi JForm ?
                            Il faudrait que je vérifie de quand ça date, mais probablement du passage de la version 1.5 par son auteur précédent (qui utilisait un $_POST) à la 1.6.

                            Mais comme c'est un plugin qui est activé pour déclencher une action automatisée (lancer périodiquement une sauvegarde de la base, fonction du paramétrage de fréquence entre autre), peut-être est-ce l'explication de ce choix ?
                            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                            Commentaire


                            • #15
                              Re : Remplacer JRequest ?

                              Envoyé par ced1870 Voir le message
                              salut

                              ça serait plutot :

                              ?
                              car JFactory::getApplication()->input est l'instance de JInput

                              CEd
                              En fait si tu récupères dans un instance de Jinput, tu récupères ensuite le contenu par un get
                              Code PHP:
                              $input JFactory::getApplication()->input;
                              $pJForm = new JInput($input->get('jform''''array'));  
                              $toto $pJForm->get('toto','0'); 
                              Sinon tu récupères directement dans l'array
                              Code PHP:
                              $input JFactory::getApplication()->input;
                              $pJForm $input->get('jform''''array');  
                              $toto $pJForm['toto']; 
                              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                              Rejoignez le Joomla Users Groupe Alsace...
                              roland_d_alsace va-t-il devenir roland_du_grand_est ?

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X