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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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 hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 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
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X