Ich denke, Sie haben in Ihrem Controller getan, möglicherweise sollten Sie den Objektmanager mithilfe der Kontextklasse in der __construct-Methode initialisieren lassen.
Hallo, ich rufe die Konstruktmethode bereits in meiner Blockklassendatei auf. Bitte überprüfen Sie den folgenden Link für weitere Details. Codebeautify.org/alleditor/0b796a Und danke für Hilfe.
Pratik
Dies sollte nicht die akzeptierte Antwort sein. Sie sollten den Objectmanager nicht auf die beschriebene Weise verwenden.
Seanbreeden
22
Wenn Sie die Kategorie-ID in Magento2 benötigen, können Sie die Werte anhand der folgenden Schritte ermitteln
1.Nehmen Sie die Verwendung Magento\Framework\Registryin Ihre Klassendatei auf.
<?php
/**
* class file
*/namespaceVendor\Module\Model;useMagento\Framework\Registry;...
2.Erstellen Sie ein Objekt dafür mit dem Objekt-Manager oder, falls Sie es in der Steuerung verwenden, weisen Sie es in Ihrer __construct()Funktion zu als \Magento\Framework\Registry $registry:
Weitere Informationen zur Implementierung dieses Konzepts in Magento2 finden Sie in der Klassendatei und der Funktion public function _initCategory(). Bei dieser Methode registrieren sie die aktuelle Kategorie.
Hallo, ich folge Schritt und überprüfe das Ergebnis. Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. Das Objekt DOMDocument sollte erstellt werden.
Pratik
Ihr Privatbesitz befindet sich am falschen Ort.
LM_Fielding
10
Versuchen Sie diesen Code. das wird dir definitiv helfen.
Das Obige scheint korrekt zu sein, aber ich denke, dass es nicht der beste Ansatz ist, direkt in die Registrierung zu springen. Magento bietet einen Layer Resolver, der diese Funktionalität bereits enthält. (Siehe den TopMenu Block in den Catalog Plugins)
Ich schlage vor, die Klasse \ Magento \ Catalog \ Model \ Layer \ Resolver zu injizieren und diese zu verwenden, um die aktuelle Kategorie abzurufen. Hier ist der Code:
Antworten:
Ich denke, Sie haben in Ihrem Controller getan, möglicherweise sollten Sie den Objektmanager mithilfe der Kontextklasse in der __construct-Methode initialisieren lassen.
quelle
Wenn Sie die Kategorie-ID in Magento2 benötigen, können Sie die Werte anhand der folgenden Schritte ermitteln
1.Nehmen Sie die Verwendung
Magento\Framework\Registry
in Ihre Klassendatei auf.2.Erstellen Sie ein Objekt dafür mit dem Objekt-Manager oder, falls Sie es in der Steuerung verwenden, weisen Sie es in Ihrer
__construct()
Funktion zu als\Magento\Framework\Registry $registry
:3. Dann können Sie es einfach mit der Klasse verwenden als:
Weitere Informationen zur Implementierung dieses Konzepts in Magento2 finden Sie in der Klassendatei und der Funktion public function
_initCategory()
. Bei dieser Methode registrieren sie die aktuelle Kategorie.quelle
Versuchen Sie diesen Code. das wird dir definitiv helfen.
quelle
Das Obige scheint korrekt zu sein, aber ich denke, dass es nicht der beste Ansatz ist, direkt in die Registrierung zu springen. Magento bietet einen Layer Resolver, der diese Funktionalität bereits enthält. (Siehe den TopMenu Block in den Catalog Plugins)
Ich schlage vor, die Klasse \ Magento \ Catalog \ Model \ Layer \ Resolver zu injizieren und diese zu verwenden, um die aktuelle Kategorie abzurufen. Hier ist der Code:
Die Methode getCurrentCategory () in der Resolver-Klasse führt die folgenden Aktionen aus.
Wie Sie sehen, wird die Registrierung weiterhin verwendet, es wird jedoch ein Fallback für den Fall bereitgestellt, dass dies fehlschlägt.
quelle