Это довольно простой, но я не могу найти рабочий пример на Stackexchange или Google. Я хочу загрузить продукт из помощника или блока. Я уже пробовал некоторые вещи, такие как:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('\Magento\Catalog\Api\Data\ProductInterface');
$product->get('<SKU>');
$product->getName();
Это ничего не возвращает. Я также пытался загрузить любые доступные модели и API, но, похоже, ничего не работает с SKU.
Use Magento\Catalog\Api\ProductRepositoryInterface to get it in your constructor.
? Что мне делать? Большое спасибоВместо непосредственного использования менеджера объектов, введите ProductFactory:
Тогда используйте это так:
или выполнить полную загрузку (вышеизложенное загружает ее с помощью коллекции):
источник
load()
и коллекций - это «Magento 1», лучше использовать репозиторий, как это предложено @RiccardoT.Api/Data/Product
), которая представляет собой модель продукта, преобразованную в неработающий DTO. Что-то, чтобы рассмотреть, поскольку они весьма различны.$product = $this->productFactory->create(); $product->load($product->getIdBySku($sku)); $product->getThumbnailUrl()
для отображения миниатюры товара, но это не работает.productFactory
Мне нравится ответ @ phoenix128-riccardot, но я бы добавил исключение на тот случай, если продукт не существует:
Я не смог добавить его в качестве комментария (слишком низкая репутация), извините.
источник
Вы можете попробовать это
источник
Попробуй это:
источник
Использование Dependency Injection (DI)
Вот пример кода для получения информации о продукте по идентификатору продукта и SKU в Magento 2 с использованием внедрения зависимостей.
В этом случае нам может понадобиться внедрить объект класса \ Magento \ Catalog \ Model \ ProductRepository в конструктор класса блока нашего модуля и получить к нему доступ из файла представления (.phtml).
Пример пути к файлу: app / code / YourCompanyName / YourModuleName / Block / YourCustomBlock.php
Теперь мы можем использовать функции в нашем файле представления (.phtml) следующим образом.
Использование диспетчера объектов
Вот пример кода для получения информации о продукте по идентификатору продукта и SKU в Magento 2 с помощью диспетчера объектов.
источник
источник