Drupal 8 & Drupal 9 - Changer l'ordre d'exécution des hooks

Posté le Vendredi 5 mars 2021 - 14:46

Pour un projet, je souhaiter alterer un type d'entité via HOOK_entity_type_alter. Problème un module du core effectuait une modification sur ce même type d'entité, et son hook était exécuté après celui de mon module. Les modifications de mon module n'étaient donc pas prise en compte.

Il y a plusieurs possibilités pour résoudre ce soucis, celle que j'ai utilisé ici est de forcer ce hook à être exécuté en dernier. Ceci en utilisant le HOOK_module_implements_alter (dans cet exemple, le nom machine de mon module est kgaut [oui, c'est vendredi, je ne suis pas très inspiré]).

function kgaut_module_implements_alter(&$implementations, $hook) {
  switch ($hook) {
    case 'entity_type_alter':
      $group = $implementations['kgaut'];
      unset($implementations['kgaut']);
      $implementations['kgaut'] = $group;
      break;
  }
}

Ce bout de code force le hook entity_type_alter à utiliser l'implémentation du module kgaut en dernier (et après donc toutes les autres implémentations des autres modules)

Aller plus loin ?

 

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...