Fork me on GitHub






$helper et xoops_cp_header();
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Je viens enfin de comprendre un bug pernicieux.
dans le "header.php" de l'admin, il faut initialiser $helper pour pouvoir définir ensuite les Handler
dans mon cas ça se présente comme ça :
// Get instance of module
$helper XoopsModulesGlossaireHelper::getInstance();
$categoriesHandler $helper->getHandler('Categories');
$entriesHandler $helper->getHandler('Entries');
$myts MyTextSanitizer::getInstance();


ensuite il faut appeler la fonction xoops_cp_header(); pour les forms qui vont suivre.

Jusque là pas de soucis, sauf quand dans les préférence général de xoops on indique pour la le paramètre "Module utilisé pour votre page d'accueil" un module, "news" en l’occurrence pour moi (ce que je fait que très rarement je préfère un block qui sert de menu).
Bref du coup $helper ne pointe plus sur le module glossaire, mais sur le module news, ce qui est plutôt fâcheux car impossible de récupérer la config du module Glossaire.

Pour l'instant pour régler ce problème je redéfini $helper juste après la fonction xoops_cp_header, ce qui donne
// Get instance of module
$helper XoopsModulesGlossaireHelper::getInstance();
$categoriesHandler $helper->getHandler('Categories');
$entriesHandler $helper->getHandler('Entries');
$myts MyTextSanitizer::getInstance();

/*
    blablabbla
*/

xoops_cp_header(); // <=== et la $heper ppointe sur news

//et la $helper repointe sur glossaire
$helper XoopsModulesGlossaireHelper::getInstance();

/*
    blablabbla
*/


Je ne suis pas sur qu'on puisse corriger ça, le tout est de le savoir. Peut être appeler la fonction xoops_cp_header avant de définir $helper !!!

Posté le : 24/06/2022 18:01

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: $helper et xoops_cp_header();
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
je ids peut-être une betise, mais il me semble que tu peux récupérer la configuration d'un module en étant dans un autre. En spécifiant le nom d'un module quelque part.
J'ai vu passé un truc comme ça quelque part, je vais regarder demain, aujourd'hui j'aurai pas une minute à moi

Posté le : 25/06/2022 09:59
Partager Twitter Partagez cette article sur GG+
Re: $helper et xoops_cp_header();
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Te casses pas la tête ma solution fonctionne, je voulais juste soulever le problème.
Dans un autre module j'avais carrément renommer $helper en $NomDuModuleHelper.

Posté le : 25/06/2022 18:45

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: $helper et xoops_cp_header();
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
Ceci n'est pas un bug, par défaut le Helper récupère le nom du module courant mais si on est dans un autre module ou un bloc il faut spécifier au Helper le nom du module:

$helperGlossaire Helper::getHelper('Glossaire');
$categoriesHandler $helperGlossaire->getHandler('Categories');
$entriesHandler $helperGlossaire->getHandler('Entries');


Voila ce qu'il faut faire.

Bonne suite

Posté le : 26/06/2022 21:05
Partager Twitter Partagez cette article sur GG+
Re: $helper et xoops_cp_header();
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
quelque part, une variable qui est modifiée à mon insu et qui donc n'est pas fiable c'est un bug.
Et effectivement comme je le précisais plus haut renommer $helper avec le nom du module ça règle le problème.

Posté le : 26/06/2022 21:12

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: $helper et xoops_cp_header();
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
J'ai mis un autre nom à la variable mais cela fonctionne en gardant le même nom.

Ta variable n'est pas modifiée par magie mais quand tu demandes le helper tu fais une erreur car tu ne spécifies pas le nom du module donc le helper ne sait pas quel module prendre. Par défaut il va initialiser le helper avec le module courant.

Donc cela te fait croire que ton helper est modifié mais ce n'est pas le cas, il donne juste l'information du module par défaut.

Dans la plupart des cas cela fonctionne mais pas dans le cas que tu indiques et dans les blocs.

Donc pas un bogue du helper mais une mauvaise utilisation du helper.


Posté le : 26/06/2022 21:55
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

86 Personne(s) en ligne (70 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 86 | Plus ...