Wszystko, co musisz zrobić, to zapytać fabrykę o pożądany model w konstruktorze. Zostanie wygenerowany automatycznie po uruchomieniu Magento lub kompilatora.
dostał błąd - Klasa Magento \ Framework \ ObjectManager nie istnieje
Anas Mansuri
5
Technicznie, jeśli masz instancję \Magento\Framework\ObjectManagermożna zadzwonić createz geta to daje przedmiot pragnienie. Ale tak naprawdę zależy to od tego, gdzie chcesz tego użyć, ponieważ Magento 2 przesuwa się w kierunku wstrzykiwania zależności za pośrednictwem konstruktora .
Odpowiedzi:
Magento odradza bezpośrednie korzystanie z ObjectManager. Zapewnia klasy usług, które ją abstrakują dla wszystkich scenariuszy.
W przypadku wszystkich produktów innych niż zastrzyki (modeli) należy użyć fabryki:
Wszystko, co musisz zrobić, to zapytać fabrykę o pożądany model w konstruktorze. Zostanie wygenerowany automatycznie po uruchomieniu Magento lub kompilatora.
źródło
Możesz to zrobić w następujący sposób:
ale musisz upewnić się, że
_objectManager
członek istnieje.W większości klas powinien, ale jeśli nie wstrzyknie go do konstruktora. Lubię to:
[edytuj rok później]
Nawet jeśli powyższa odpowiedź zadziała, nie jest to najlepsza praktyka. Dla właściwego sposobu zobacz odpowiedź Antona.
źródło
Technicznie, jeśli masz instancję
\Magento\Framework\ObjectManager
można zadzwonićcreate
zget
a to daje przedmiot pragnienie. Ale tak naprawdę zależy to od tego, gdzie chcesz tego użyć, ponieważ Magento 2 przesuwa się w kierunku wstrzykiwania zależności za pośrednictwem konstruktora .źródło