Próbowałem zainstalować wtyczkę i usunąłem var / generation i var / cache / *. Sprawdziłem MAGE_MODE i jestem programistą, ale teraz, gdy uzyskuję dostęp do interfejsu i administratora, pojawiają się losowe błędy mówiące o takich rzeczach:
Class Magento\Customer\Model\CustomerFactory does not exist
Klasa Magento \ Sales \ Model \ ResourceModel \ Report \ OrderFactory nie istnieje
Niektóre klasy są tworzone, ale nie wszystkie. Próbowałem ponownie wyczyścić pamięć podręczną i folder generowania, ale potem otrzymuję te same błędy.
Jakieś pomysły?
Odpowiedzi:
Magento 2 generuje klasy Factory wewnątrz
var/generation
katalogu. Jeśli więc istnieje problem z uprawnieniami do folderu lub problem z właścicielem folderu w tym katalogu, nie można wygenerować klasy fabrycznej i pojawia się taki błąd.Po wyczyszczeniu
var/generation
katalogu i ustawieniu odpowiednich uprawnień do niego ten błąd powinien zostać rozwiązany.Zobacz więcej na temat generowania kodu w Magento 2
źródło
var/di
lubvar/cache
, patrz devdocs.magento.com/guides/v2.2/install-gde/trouble/…Dla mnie usunąłem
var/generation
folder, a następnie uruchomiłem,magento setup:di:compile
który wygenerował wszystkie niezbędne klasy.(w moim przypadku: Wystąpił problem z pamięcią podręczną, usunąłem początkowy folder pamięci podręcznej).
To rozwiązało mój problem. Twoje zdrowie !!
źródło
W Magento nowe wersje, takie jak 2.2.2 i nowsze, zmieniły ścieżkę generowania kodu na
więc musisz sprawdzić uprawnienia również dla tego folderu. Musisz uruchomić następujące polecenie w katalogu głównym katalogu instalacyjnego Magento, aby rozwiązać ten problem:
źródło
Należy wykonać następujące polecenia:
Potrzebne jest również odpowiednie pozwolenie. Jeśli na produkcji, musisz wykonać odpowiednie uprawnienia. Ale na komputerze lokalnym możesz uruchomić pełne uprawnienia:
źródło
Udziel uprawnienia 777 i zmień własność na dane www folderu wygenerowanego / kodu, a następnie uruchom polecenie
sudo php bin/magento setup:di:compile
wyczyść pamięć podręczną i rozwiąż problemźródło
To tylko
<magento-root>/var/
problem z uprawnieniami do folderu.Wykonaj poniższe polecenie w trybie CLI
źródło
Magento 2 tworzy klasy fabryczne w
var/generation
folderze, a jeśli dodasz nowy parametr w swoim,__construct()
a jego klasa fabryczna nie istnieje, Magento 2 wyświetli powyższy komunikat o błędzie. Mimo że istnieje niewiele rozwiązań, które już ci dały pytanie, mogę zaproponować inne rozwiązanie, które nie wymaga wyczyszczenia folderu generowania. Użyj poniższej komendy po wprowadzeniu jakichkolwiek zmian związanych z klasami fabrycznymi:To polecenie może być bardziej przydatne na serwerze produkcyjnym.
źródło
Klasa ... Fabryka nie istnieje oznacza, że klasa modelu nie została załadowana. Ponieważ Magento 2 opiera się na programowaniu modułowym, musimy określić klasę modelu, w której chcemy użyć jawnie. Możemy użyć naszej klasy modelu w dwóch typach:
1. przez „użycie”
Bezpośrednio
Po kliknięciu adresu URL ( http://domain.com/twoj nazwa frontowa modułu) wtyczki w przeglądarce Magento generuje kod dla Twojego modułu, jak poniżej:
W twoim przypadku musisz sprawdzić, czy „CustomerFactory” i „OrderFactory” są używane jak powyżej, czy nie.
źródło