Magento 2: Cómo verificar si un módulo está instalado

18

En Magento 2, ¿es posible verificar si un módulo está instalado en tiempo de ejecución?

En Magento 1, usaría el isModuleEnabledmétodo auxiliar o buscaría manualmente el árbol de configuración global y verificaría los nodos <modules/>.

¿Hay un isModuleEnabledequivalente en Magento 2? Si no, ¿cómo puedo obtener la configuración global y verificar los nodos del módulo que quiero?

Alan Storm
fuente

Respuestas:

15

Tal vez estás buscando esto?

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);
}

También hay un método isOutputEnabled en la misma clase. depricated desde v. 2.2.0

Ejemplo de uso:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
fuente
Sí, eso es lo que estaba buscando!
Alan Storm
3

Parte del objetivo de usar Composer es garantizar que existan dependencias, o el módulo no se instalará. Sin embargo, existe este modo de salida "deshabilitar" que es un poco extraño, pero es más como "rápido, está roto, apáguelo hasta que podamos solucionarlo correctamente".

Por lo tanto, el concepto de módulo habilitado no es exactamente el mismo en m2.

Dicho esto, estoy bastante seguro de que existe una API de este tipo, pero es posible que aún no esté marcada como pública / compatible con la anotación @ API

Alan Kent
fuente