To dość proste, ale nie mogę znaleźć działającego przykładu na Stackexchange lub Google. Chcę załadować produkt z pomocnika lub bloku. Próbowałem już takich rzeczy jak:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('\Magento\Catalog\Api\Data\ProductInterface');
$product->get('<SKU>');
$product->getName();
To nic nie zwraca. Próbowałem również załadować dostępne modele i interfejsy API, ale wydaje się, że nic nie działa z SKU.
Use Magento\Catalog\Api\ProductRepositoryInterface to get it in your constructor.
? Co powinienem zrobić?Zamiast bezpośrednio używać menedżera obiektów, wstrzyknij ProductFactory:
Następnie użyj go w następujący sposób:
lub wykonać pełne ładowanie (powyższe ładuje je za pomocą kolekcji):
źródło
load()
i kolekcje są sposobem „Magento 1”, lepiej skorzystaj z repozytorium, jak sugeruje @RiccardoT.Api/Data/Product
), który jest modelem produktu przekształconym w głupi DTO. Coś do rozważenia, ponieważ są one zupełnie różne.$product = $this->productFactory->create(); $product->load($product->getIdBySku($sku)); $product->getThumbnailUrl()
wyświetlić miniaturę produktu, ale nie działa.productFactory
Podoba mi się odpowiedź @ phoenix128-riccardot, ale dodałbym wyjątek, na wypadek gdyby produkt nie istniał:
Przepraszam, nie mogłem dodać tego jako komentarza (zbyt niska reputacja).
źródło
Możesz tego spróbować
źródło
Spróbuj tego:
źródło
Korzystanie z wstrzykiwania zależności (DI)
Oto przykładowy kod, aby uzyskać informacje o produkcie według identyfikatora produktu i kodu SKU w Magento 2 przy użyciu wstrzykiwania zależności.
W tym przypadku możemy potrzebować wstrzyknąć obiekt klasy \ Magento \ Catalog \ Model \ ProductRepository do konstruktora klasy blokowej naszego modułu i uzyskać do niego dostęp z pliku widoku (.phtml).
Przykładowa ścieżka pliku: app / code / YourCompanyName / YourModuleName / Block / YourCustomBlock.php
Teraz możemy korzystać z funkcji w naszym pliku widoku (.phtml) w następujący sposób.
Korzystanie z Menedżera obiektów
Oto przykładowy kod, aby uzyskać informacje o produkcie według identyfikatora produktu i jednostki SKU w Magento 2 przy użyciu menedżera obiektów.
źródło
źródło