Magento 2: Como verificar se um módulo está instalado

18

No Magento 2, é possível verificar se um módulo está instalado em tempo de execução?

No Magento 1, eu usaria o isModuleEnabledmétodo helper ou buscaria manualmente a árvore de configuração global e verificaria os nós em <modules/>.

Existe um isModuleEnabledequivalente no Magento 2? Caso contrário, como posso pegar a configuração global e procurar os nós do módulo que desejo?

Alan Storm
fonte

Respostas:

15

Talvez você esteja procurando por isso?

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

Também existe o método isOutputEnabled na mesma classe. privado desde a versão 2.2.0

Exemplo de uso:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
fonte
Sim, era isso que eu estava procurando!
Alan Storm
3

Parte do objetivo do uso do compositor é garantir a existência de dependências, caso contrário o módulo não será instalado. No entanto, existe esse modo de saída "desativar" que é um pouco estranho, mas é mais parecido com "rápido, está quebrado, desligue-o até que possamos corrigi-lo corretamente".

Portanto, o conceito de is module enabled não é o mesmo em m2.

Dito isso, tenho certeza de que existe uma API, mas ela ainda pode não estar marcada como pública / suportada com a anotação @ API

Alan Kent
fonte