Magento 2: So prüfen Sie, ob ein Modul installiert ist

18

Kann in Magento 2 überprüft werden, ob ein Modul zur Laufzeit installiert ist?

In Magento 1 würde ich entweder die isModuleEnabledHilfsmethode verwenden oder den globalen Konfigurationsbaum manuell abrufen und die Knoten unter überprüfen <modules/>.

Gibt es isModuleEnabledin Magento 2 ein Äquivalent? Wenn nicht, wie kann ich die globale Konfiguration abrufen und nach den gewünschten Modulknoten suchen?

Alan Storm
quelle

Antworten:

15

Vielleicht suchen Sie das?

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

In derselben Klasse gibt es auch die Methode isOutputEnabled . benachteiligt seit v. 2.2.0

Anwendungsbeispiel:

if (!$this->_moduleManager->isEnabled('Magento_Reports')) {
zhartaunik
quelle
Ja, das habe ich gesucht!
Alan Storm
3

Ein Teil des Ziels bei der Verwendung von Composer besteht darin, sicherzustellen, dass Abhängigkeiten vorhanden sind. Andernfalls wird das Modul nicht installiert. Es gibt jedoch diesen "Deaktivieren" -Ausgabemodus, der etwas seltsam ist, sondern eher "Schnell, es ist kaputt, schalten Sie es aus, bis wir es richtig beheben können".

Das Konzept von is module enabled ist also in m2 nicht ganz dasselbe.

Trotzdem bin ich mir ziemlich sicher, dass es eine solche API gibt, aber sie ist möglicherweise noch nicht als öffentlich / unterstützt mit @ API-Annotation markiert

Alan Kent
quelle