Magento 2: Comment vérifier si un module est installé

18

Dans Magento 2, est-il possible de vérifier si un module est installé au moment de l'exécution?

Dans Magento 1, j'utiliserais soit la isModuleEnabledméthode d'assistance, soit je récupérerais manuellement l'arborescence de configuration globale et vérifierais les nœuds sous <modules/>.

Y a-t-il un isModuleEnabledéquivalent dans Magento 2? Sinon, comment puis-je récupérer la configuration globale et vérifier les nœuds de module que je veux?

Alan Storm
la source

Réponses:

15

Peut-être cherchez-vous cela?

lib / internal / Magento / Framework / Module / Manager.php

/**
 * Whether a module is enabled in the configuration or not
 *
 * @param string $moduleName Fully-qualified module name
 * @return boolean
 */
public function isEnabled($moduleName)
{
    return $this->_moduleList->has($moduleName);
}

Il existe également la méthode isOutputEnabled dans la même classe. déprécié depuis v. 2.2.0

Exemple d'utilisation:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
la source
Ouais, c'est ce que je cherchais!
Alan Storm
3

Une partie du but de l'utilisation de composer est que vous pouvez vous assurer que les dépendances existent, sinon le module ne sera pas installé. Cependant, il y a ce mode de sortie "désactiver" qui est un peu bizarre, mais ressemble plus à "rapide, il est cassé, éteignez-le jusqu'à ce que nous puissions le réparer correctement".

Le concept de module activé n'est donc pas tout à fait le même en m2.

Cela dit, je suis sûr qu'il existe une telle API, mais elle n'est peut-être pas encore marquée comme publique / prise en charge avec l'annotation @ API

Alan Kent
la source