Menu Action
Ajouter un menu action à un module
Créations de Modules
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Je suis actuellement en train de concevoir un module pour une association utilisant PHPBoost 5.1.
Avec le WIKI, la documentation et ce forum j'ai réussi a trouver nombre de réponses a mes questions.
Néanmoins je ne trouve aucune info pour implémenter un menu d'action dans le module.
Si j'ai bien compris une instance de la classe du menu est créée dans le fichier (Nom_du_Module)ExtensionPointController.class.php et le contenu du menu est géré dans le fichier (Nom_du_Module)TreeLinks.class.php mais je ne trouve pas comment l'afficher.
Quelqu'un pour m'aider ?
Merci d'avance
Claude
janus57 Membre non connecté
- Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
- Equipe Assistance
si mes souvenir sont bon il suffit juste dans MONModuleExtensionPointController.class.php de créer une fonction public "tree_links()" puis dans MONModueTreeLinks.class.php
Code PHP :
class MONMTreeLinks implements ModuleTreeLinksExtensionPoint { public function get_actions_tree_links() { $lang = LangLoader::get('common', 'MONModule'); $tree = new ModuleTreeLinks(); /* ICI le menu d'acion */ return $tree; } }
Exemple : <a href="https://github.com/PHPBoost/PHPBoost/blob/5.1/articles/phpboost/ArticlesTreeLinks.class.php">https://github.com/PHPBoost/PHPBoost/blob/5.1/articles/phpboost/ArticlesTreeLinks.class.php</a>
Cordialement, janus57
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Je vais inspecter ces fichiers sur d'autres modules pour en comprendre le fonctionnement et je reviendrai vers vous en cas de problème...
Claude
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Je reviens vers vous car j'ai toujours le même problème d'affichage du menu action :
Dans le dossier phpboost de mon module qui s'appelle "loc", j'ai créé le fichier locExtensionPointProvider.class.php (dans mes messages précédents je parlais du fichier ModuleExtensionPointController.class.php mais après vérification sur les divers modules il semble bien qu'il faille utiliser 'Provider').
Ce fichier contient :
Code PHP :
<?php /* INFORMATIONS DE COPYRIGHT */ class locExtensionPointProvider extends ExtensionPointProvider { public function __construct() { parent::__construct('loc'); } public function tree_links() { return new locTreeLinks(); } } ?>
Toujours dans le répertoire phpboost de mon module j'ai créé le fichier locTreeLinks.class.php qui contient :
Code PHP :
<?php /* INFORMATIONS DE COPYRIGHT */ class locTreeLinks implements ModuleTreeLinksExtensionPoint { public function get_actions_tree_links() { $lang = LangLoader::get('common', 'loc'); $tree = new ModuleTreeLinks(); $tree->addlink(new ModuleLink('test intitulé de menu', '/url_de_test/'); return $tree; } } ?>
Malgré tout cela le menu action ne s'affiche toujours pas sur les diverses pages de mon module.
En comparant avec d'autres modules je ne vois pas où peut se trouver mon erreur.
Manque-t-il quelque chose ?
Merci d'avance pour vos éclairages.
Claude
Mipel Membre non connecté
- Administrateur
- Voir le profil du membre Mipel
- Inscrit le : 04/04/2016
- Site internet
- Groupes :
- Equipe Rédaction
- Equipe Modération
C'est ici que ça se passe :
Code PHP :
$tree->addlink(new ModuleLink('test intitulé de menu', '/url_de_test/');
La bonne fonction à appeler est add_link(..... et non addlink(
Pas de message d'erreur lors de l'appel d'une fonction inexistante ?
Mipel
Édité par Mipel Le 30/09/2018 à 21h29
Merci de penser à joindre le rapport système de votre site, il peut nous aider à mieux répondre à vos questions.
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Corrigé dans le fichier mais toujours pas d'affichage, et aucune erreur non plus, tant en affichage que dans les erreurs archivées.
D'ailleurs j'ai l'impression que les classes locExtensionPointProvider et locTreeLinks ne sont jamais appelées :
J'ai placé dans ces classes :
- des fonctions echo "appel de la classe (nom de la classe)"
- des fautes de frappes (absence du ' ; ' en fin de ligne)
Résultat : rien ! aucun affichage des echos ni messsage d'erreur (et aucune page blanche), le module s'affiche normalement, sauf le menu action,
Une idée peut être ?
Claude
janus57 Membre non connecté
- Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
- Equipe Assistance
possible d'avoir une copie du module ?
Cordialement, janus57
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Édité par cff Le 30/09/2018 à 23h34
Claude
Mipel Membre non connecté
- Administrateur
- Voir le profil du membre Mipel
- Inscrit le : 04/04/2016
- Site internet
- Groupes :
- Equipe Rédaction
- Equipe Modération
Le problème est-il réglé ? Si non, merci de me passer également le lien vers le module afin que je vérifie son fonctionnement.
Merci
Merci de penser à joindre le rapport système de votre site, il peut nous aider à mieux répondre à vos questions.
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Merci pour l'intérêt et le temps passé sur ma question.
Je t'ai envoyé en MP le lien vers le fichier zip du module en question.
bonne journée !
Claude
janus57 Membre non connecté
- Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
- Equipe Assistance
petit retour rapide (car j'aii pas trop eu le temps de regarder en profondeur).
Donc déjà je vois des anomalies, à savoir :
<ol class="formatter-ol">
<li class="formatter-li">que il y a un fichier "locExtensionPointController.class.php" dans /controllers qui commence par un jolie "class locExtensionPointProvider"
</li><li class="formatter-li">que dans /phpboost il y a un locExtensionPointController.class.php avec un "extends ExtensionPointController" (qui n'existe pas à priori)
</li><li class="formatter-li">error_reporting et ini_set dans le index.php (mauvaise pratique car si vous voulez des message d'erreur il suffit d'activer le mode DEV de PHPBoost [A NE JAMAIS FAIRE SUR UN SITE LIBREMENT ACCESSIBLE VIA INTERNET]
</li><li class="formatter-li">un echo dans locTreeLinks (préférer la class de <a href="/wiki/debogage-dans-phpboost">débug</a> de phpboost)
</li></ol>
Mais déjà ce qui est sûr c'est qu'il faut éliminer les fichier en doublons pour éviter que le mauvais soit chargé dans l'autoload.
Cordialement, janus57
cff Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre cff
- Inscrit le : 10/11/2017
- Groupes :
Les erreurs remarquées sont le résultat des nombreux tests que j'ai tenté avant de poster sur ce forum et il semble que j'ai oublié de les supprimer.
le fichier /controllers/locExtensionPointController.class.php a été supprimé,
ainsi que le fichier /phpboost/locExtensionPointController.class.php.
Dans le fichier index.php j'ai commenté l'error_reporting ainsi que l'ini_set
La ligne 'echo' dans locTreeLinks me servait à vérifier que la classe était appelée, ce qui ne semble pas être le cas. Je l'ai également commentée.
Malgré toutes ces corrections (pour lesquelles je te remercie !) ce f**** menu ne s'affiche toujours pas !
Je me demande où j'ai encore pu commettre une boulette !
Claude
xela Membre non connecté
- Modérateur
- Voir le profil du membre xela
- Inscrit le : 26/12/2015
- Groupes :
- Equipe Rédaction
réponse et début de solution envoyées par mp.
Pour toutes questions, poursuivons sur le forum.
Cordialement,
Xela.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie