Adaptation d'extensions (Joomla! 5)

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

  • Adaptation d'extensions (Joomla! 5)

    Bonjour,

    Je continue à essayer de rendre compatibles des extensions que j'utilise et qui ne sont plus suivies par leurs auteurs, à ma connaissance.
    Actuellement, je suis sur Folcomedia Compilateur que j'utilise de temps en temps, et je dois dire qu'après avoir corrigé peu de choses, je suis bloqué par une incompréhension sur la ligne
    Code:
    $controller = JControllerLegacy::getInstance('fmpackager');
    qui me renvoie une erreur 0
    Class "JControllerLegacy" not found
    Si j'ajoute la ligne
    Code:
    namespace Joomla\Component\Config\Api\Controller;
    puis
    Code:
    use Joomla\CMS\MVC\Controller\ApiController;
    l'erreur devient
    Class "Joomla\Component\Config\Api\Controller\JContr olle rLegacy" not found
    Pourtant, je lis dans potential backward compatibility pour J4
    JControllerLegacy::_construct now takes additional arguments. If you were previously getting a Controller object through JControllerLegacy::getInstance you do not need to change your code.
    ce qui a été traduit en français par l'inverse ?
    JControllerLegacy::_construct prend dorénavant des arguments supplémentaires. Si par le passé vous obteniez un objet de type Controller en utilisant JControllerLegacy::getInstance, vous devrez modifier votre code
    Dans la mesure où les paramètres sont optionnels, je pense que le texte en anglais est correct, mais pour autant, l'erreur reste présente et je ne trouve nulle part comment gérer cette ligne.

    Comment faire ?
    Merci de votre aide !
    Dernière édition par RobertG à 24/07/2023, 11h42
    "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
    Bonjour,

    La structure d'un composant a 'légérement' évolué en Joomla 4.

    Les fichiers php sur la racine d'admin et site ont disparu et c'est géré par admin/services/provider.php.

    Bref, il faut revoir un peu tout.

    J'ai trouvé une doc qui semble contenir les informations sur la structure d'un composant : https://www.techfry.com/resources/ho...omla-component et sa première page adding basic files est bien https://www.techfry.com/joomla/how-t...omla-component

    Je ne sais pas si elle est complétement à jour, mais, c'est un bon point de départ.

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Merci Pascal, mais je ne m'y retrouve pas.

      Sur une autre page du site https://www.techfry.com/joomla/entry...omla-component il est fait référence à cet usage de JControllerLegacy sans aucune déclaration préalable.
      Dans Joomla! 4 et 5, on ne retrouve pratiquement que des fonctions "display" précédées de ce commentaire
      * @return static A \JControllerLegacy object to support chaining.
      Exemple dans Joomla_432-Stable-Full_Package_French_v1_1\administrator\components\ com_checkin\src\Controller
      Il n'y a aucune ligne JControllerLegacy::getInstance() dans les core de J4 et J5.
      Le code où ça bloque est :
      Code:
      // Exécution tâche courante
      $controller = JControllerLegacy::getInstance('fmpackager');
      $controller->execute(Factory::getApplication()->input->get('task'));
      $controller->redirect();​
      A propos, j'ai voulu tester aussi Patch Tester, mais ça ne fonctionne pas sous J5 (PHP 8.1 ou 8.2) avec un message d'erreur 0 encore
      PatchTester\Model\PullModel::__construct(): Argument Forum ($db) must be of type ?JDatabaseDriver, Joomla\Database\Mysqli\MysqliDriver given
      La ligne de code en cause est
      Code:
      $pullModel  = new PullModel(null, Factory::getDbo());
      "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
        Bonjour,

        Ce qui remplace JControllerLegacy c'est BaseController

        Depuis Joomla! 4.2, il ne faut plus utiliser Factory::getDbo() c'est remplacé par
        Code:
        $db = Factory::getContainer()->get('DatabaseDriver');
        ​ à certains endroits on peut avoir aussi accès à
        Code:
        $db = $this->getDatabase();​
        Développeur de l'extension Kunena : https://github.com/Kunena/Kunena-Forum

        Commentaire


        • #5
          Bonjour et merci de ta réponse.

          Il faudra que j'y pense pour getDbo, qu'il m'a déjà fallu remplacer dans du code personnalisé que j'avais utilisé dans Fabrik.
          "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
            Je dois être marabouté !
            Pour un plugin où j'ai bien la déclaration
            Code:
            use Joomla\CMS\Language\Text​;
            la ligne
            Code:
            $title = Text::_('PLG_CUPDATER_FOUND_ONE_UPDATE');
            renvoie l'erreur
            Class "Text" not found
            "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


            • #7
              Bonjour Robert,

              En effaçant ta ligne use Joomla\CMS\Language\Text et en la rentrant à la main, je n'ai plus de problème.

              Je pense que tu as fait un copie/coller d'une ligne existante qui contient un caractère spécial.

              Pascal
              RobertG aime ceci.
              If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

              Commentaire


              • #8
                Bonjour Pascal,

                En effet, j'avais fait du copier-coller depuis un autre fichier, soit de J5 core, soit déjà ajouté dans une autre extension.
                Je réessaierai car cette erreur s'est produite sur plus d'une extension.
                "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
                  Question réglée pour le plugin cupdater, en remplaçant par l'écriture directe du code pour la classe Text.

                  En revanche, pour Patch tester, ça coince toujours sur la question du type de base, malgré l'application des conseils de xillibit.
                  J'ai toujours ce message lorsque je veux réinitialiser ou récupérer les données;
                  PatchTester\Model\PullModel::__construct(): Argument Forum ($db) must be of type ?DatabaseDriver, Joomla\Database\Mysqli\MysqliDriver given, called in D:\wamp64\www\joom430\administrator\components\com _patchtester\PatchTester\Controller\ResetControlle r.php on line 43
                  Le site était un 4.3.0 qui a été migré en 5 dev il y a quelques temps et mis en alpha 4 ce matin.

                  PS : j'ai bien ajouté (utile ou pas ?) cette instruction dans les fichiers qui utilisaient getDbo()
                  Code:
                  use Joomla\Database\DatabaseDriver;
                  Dernière édition par RobertG à 26/07/2023, 09h16
                  "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

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X