Magento 2: Jak sprawdzić, czy moduł jest zainstalowany

18

Czy w Magento 2 można sprawdzić, czy moduł jest zainstalowany w czasie wykonywania?

W Magento 1 użyłem isModuleEnabledmetody pomocniczej lub ręcznie pobrałem globalne drzewo konfiguracji i sprawdzę węzły poniżej <modules/>.

Czy istnieje isModuleEnabledodpowiednik Magento 2? Jeśli nie, to jak mogę pobrać konfigurację globalną i sprawdzić, które węzły modułu chcę?

Alan Storm
źródło

Odpowiedzi:

15

Może tego szukasz?

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

Istnieje również metoda isOutputEnabled w tej samej klasie. deprecjonowane od wersji 2.2.0

Przykład użycia:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
źródło
Tak, właśnie tego szukałem!
Alan Storm,
3

Jednym z celów korzystania z kompozytora jest zapewnienie, że istnieją zależności, w przeciwnym razie moduł nie zostanie zainstalowany. Jednak jest taki tryb wyjścia „wyłącz”, który jest nieco dziwny, ale bardziej przypomina „szybki, zepsuty, wyłącz go, dopóki nie będziemy w stanie go naprawić”.

Zatem koncepcja włączenia modułu nie jest taka sama w m2.

Mimo to jestem pewien, że istnieje taki interfejs API, ale może nie zostać jeszcze oznaczony jako publiczny / obsługiwany adnotacją @ API

Alan Kent
źródło