Я хочу використовувати такі функції, як 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
: завантажити продукт за ідентифікатором\Magento\Catalog\Api\ProductRepositoryInterface::get
: завантажувати продукт за skuБільш Magento спосіб досягти цього, хоча важко сказати, оскільки вони знаходять більшість місць в основному коді, це використовувати сховище продуктів.
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();