回答:
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で製品をロードするにはこれを実現する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();