Magento 2: как проверить, установлен ли модуль

18

В Magento 2 можно проверить, установлен ли модуль во время выполнения?

В Magento 1 я либо использовал isModuleEnabledвспомогательный метод, либо вручную извлекал глобальное дерево конфигурации и проверял узлы под ним <modules/>.

Есть ли isModuleEnabledэквивалент в Magento 2? Если нет, то как я могу получить глобальную конфигурацию и проверить нужные мне узлы модуля?

Алан Сторм
источник

Ответы:

15

Может быть, вы ищете это?

Библиотека / внутренний / Magento / Framework / модуль / 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);
}

Также есть метод isOutputEnabled в том же классе. исключено с версии 2.2.0

Пример использования:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
источник
Да, это то, что я искал!
Алан Шторм
3

Одна из целей использования composer - вы можете убедиться, что зависимости существуют, иначе модуль не будет установлен. Однако есть такой «отключенный» режим вывода, который немного странный, но больше похож на «быстрый, он сломан, выключите его, пока мы не сможем исправить это должным образом».

Таким образом, концепция включенного модуля не совсем одинакова в м2.

Сказав это, я почти уверен, что такой API есть, но он еще не может быть помечен как публичный / поддерживается аннотацией @ API

Алан Кент
источник