Я хочу использовать такие функции , как getName()
, getPrice()
и т.д. продукт для получения информации о продукте в Magento 2.
Может кто-нибудь показать мне, как я могу этого достичь?
Я хочу использовать такие функции , как getName()
, getPrice()
и т.д. продукт для получения информации о продукте в Magento 2.
Может кто-нибудь показать мне, как я могу этого достичь?
Ответы:
В Magento 2 предложено использовать сервисный слой для этого. Попробуйте использовать \Magento\Catalog\Model\ProductRepository::getById
метод, чтобы получить продукт по идентификатору
Magento 2 рекомендует использовать Factories
для загрузки всех моделей. Вот как вы должны это сделать:
Над своим классом добавьте эту строку:
use Magento\Catalog\Model\ProductFactory;
Теперь создайте свойство класса:
protected $productFactory;
В вашем конструкторе добавьте зависимость:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Теперь загрузите продукт, как показано ниже:
$_product = $this->productFactory->create()->load(<product_id>);
Помимо других ответов, я настоятельно рекомендую использовать следующие методы контрактов на обслуживание:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: загрузить товар по id\Magento\Catalog\Api\ProductRepositoryInterface::get
: загрузить товар по skuБолее магенто-способ достижения этого, хотя трудно сказать, так как большинство мест в основном коде делают это по-разному, это использовать репозиторий продукта.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Я получил информацию о продукте, используя функцию на странице просмотра продукта, как показано ниже.
Вот Sm / Sawyer моя тема.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();