Answers:
在Magento 2中,建议为此使用服务层。尝试使用\Magento\Catalog\Model\ProductRepository::getById
方法通过ID获取产品
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();