Ich habe versucht, ein Plugin zu installieren und habe var / generation und var / cache / * entfernt. Ich habe den MAGE_MODE überprüft und bin im Entwickler, aber jetzt, wenn ich auf das Front-End und den Administrator zugreife, erhalte ich zufällige Fehler, die bedeuten, dass Dinge wie:
Class Magento\Customer\Model\CustomerFactory does not exist
Die Klasse Magento \ Sales \ Model \ ResourceModel \ Report \ OrderFactory existiert nicht
Einige der Klassen werden erstellt, aber nicht alle. Ich habe erneut versucht, den Cache und den Generierungsordner zu leeren, aber dann erhalte ich nur die gleichen Fehler.
Irgendwelche Ideen?
Antworten:
Magento 2 generiert Factory-Klassen im
var/generation
Verzeichnis. Wenn für dieses Verzeichnis ein Problem mit der Ordnerberechtigung oder dem Ordnerbesitzer vorliegt, kann die Factory-Klasse nicht generiert werden, und Sie erhalten einen solchen Fehler.Wenn Sie das
var/generation
Verzeichnis löschen und die entsprechende Berechtigung dafür festlegen, sollte dieser Fehler behoben sein.Weitere Informationen zur Codegenerierung in Magento 2
quelle
var/di
oder seinvar/cache
, siehe devdocs.magento.com/guides/v2.2/install-gde/trouble/…Für mich entfernte ich
var/generation
Ordner, dann lief ich,magento setup:di:compile
der alle notwendigen Klassen erzeugte.(In meinem Fall: Dann habe ich ein Cache-Problem festgestellt und den ursprünglichen Cache-Ordner entfernt.)
Dann hat es mein Problem gelöst. Prost !!
quelle
In Magento-Versionen wie 2.2.2 und höher wurde dieser Code-Generierungspfad in geändert
Sie müssen also auch die Berechtigungen für diesen Ordner überprüfen. Sie müssen den folgenden Befehl im Stammverzeichnis des Magento-Installationsverzeichnisses ausführen, um dieses Problem zu beheben:
quelle
Folgende Befehle müssen ausgeführt werden:
Außerdem ist eine entsprechende Erlaubnis erforderlich. Wenn Sie in Betrieb sind, müssen Sie die entsprechenden Berechtigungen ausführen. Auf einem lokalen Computer können Sie jedoch die vollständige Berechtigung ausführen:
quelle
Erteilen Sie 777 die Erlaubnis und ändern Sie den Besitzer für www-Daten des generierten Ordners / code. Führen Sie dann den Befehl
sudo php bin/magento setup:di:compile
clear cache aus und boom aus, um Ihr Problem zu lösenquelle
Es ist nur ein
<magento-root>/var/
Problem mit der Ordnerberechtigung.Führen Sie den folgenden Befehl im CLI-Modus aus
quelle
Magento 2 erstellt die Factory-Klassen im
var/generation
Ordner. Wenn Sie einen neuen Parameter in Ihre einfügen__construct()
und die Factory-Klasse nicht vorhanden ist, gibt Magento 2 die obige Fehlermeldung aus. Auch wenn es nur wenige Lösungen gibt, die bereits für Sie eine Frage geben, kann ich Ihnen eine andere Lösung vorschlagen, bei der Sie Ihren Generierungsordner nicht löschen müssen. Bitte verwenden Sie den folgenden Befehl, wenn Änderungen in Bezug auf Factory-Klassen vorgenommen wurden:Dieser Befehl kann auf dem Produktionsserver nützlicher sein.
quelle
Klasse ... Die Fabrik existiert nicht, dh Ihre Modellklasse wurde nicht geladen. Wie Magento 2, das auf modularer Programmierung basiert, müssen wir die Modellklasse angeben, die wir explizit verwenden möchten. Wir können unsere Modellklasse in zwei Typen verwenden:
1. durch "Verwendung"
Direkt
Wenn Sie die URL ( http://domain.com/Ihr Modul-Frontname) Ihres Plugins im Browser eingeben, generiert Magento den Code für Ihr Modul wie folgt:
In Ihrem Fall müssen Sie überprüfen, ob "CustomerFactory" und "OrderFactory" im obigen Format verwendet werden oder nicht.
quelle