Problème de hook non exécuté dans module personnalisé

Je développe un module custom sous Dolibarr (version 13.0.2) et j’essaie d’ajouter un bouton dans la fiche commande fournisseur via un hook formObjectOptions sur le contexte ordersuppliercard.

J’ai créé mon fichier de hook actions_interentityorder.class.php dans custom/interentityorder/class/ avec la classe ActionsInterEntityOrder. Dans le module, j’ai bien déclaré :

$this->hooks = array(‹ ordersuppliercard ›);

Dans le fichier commande fournisseur (fourn/commande/card.php), le hook est bien appelé avec :
$hookmanager->initHooks(array(‹ ordersuppliercard ›, ‹ globalcard ›));
$reshook = $hookmanager->executeHooks(‹ formObjectOptions ›, $parameters, $object, $action);

Pour tester, j’ai ajouté un die("HOOK FILE LOADED") en début de méthode dans ma classe de hook, mais rien ne s’affiche, donc mon fichier de hook n’est pas chargé.

J’ai aussi vérifié avec un var_dump($hookmanager->hooklist) qui ne contient pas mon module.

Je me demande :

  • Faut-il déclarer le hook ailleurs ?
  • Ai-je une mauvaise structure ou nommage du fichier/classe ?
  • Dois-je activer une option spécifique pour que Dolibarr charge le hook du module ?

Merci d’avance pour votre aide, je bloque là-dessus.

Bonjour,

Normalement pour déclarer les hooks, il faut utiliser $this->module_parts dans le fichier modNomDuModule qui est dans core/modules, plutot que $this->hooks.
Il faut aussi que la fonction dans votre fichier actions_interentityorder s’appelle formObjectOptions.

Le nommage des fichiers et leur emplacement me semble correct.

Il n’y a pas d’option à activer pour que Dolibarr charge les hooks.

Regardez le tuto de Patas-Monkey sur les hooks, cela vous guidera peut-être mieux que mon analyse rapide sans visu sur votre code.

J’espère avoir pu vous aider.
Bonne journée

2 « J'aime »