Ich möchte eine RequireJs-Komponente nur unter bestimmten Bedingungen ersetzen (z. B. basierend auf der Konfiguration). Gibt es eine Möglichkeit, das Laden meines Moduls programmgesteuert zu verhindern requirejs-config.js
oder eine andere Möglichkeit, dies zu erreichen?
magento2
magento2.2
overrides
requirejs
magento2.3
Fabian Schmengler
quelle
quelle
Antworten:
Basierend auf dem @ Arshad M-Kommentar können Sie eine di.xml hinzufügen mit:
Und überschreiben Sie in <Vendor> \ <ModuleName> \ RequireJs \ Config.php die Funktion getConfig und fügen Sie Ihre Bedingung und den Modulnamen hinzu, unter dem die RequireJs nicht geladen werden sollen (wahrscheinlich von ScopeConfigInterface):
AKTUALISIEREN
Nach Kommentaren von @Alex und @Daniel: Sie können ein After-Plugin für getFiles aus Magento \ Framework \ RequireJs \ Config \ File \ Collector \ Aggregated erstellen. Die neue di.xml mit diesem Ansatz wäre also:
Und unter \ <Vendor> \ <ModuleName> \ Plugin \ RequireJs \ AfterFiles können Sie Ihre Bedingung und Ihr Modul festlegen, dass die RequireJs nicht geladen werden:
quelle
aroundGetConfig()
oderafterGetConfig()
-Methode verwenden, um das bedingte Laden zu erreichen, dann müssen wir es nicht überschreiben