Je veux utiliser des fonctions telles que getName()
, getPrice()
, etc. du produit pour récupérer des informations produit dans Magento 2.
Quelqu'un peut-il me montrer comment y parvenir?
Je veux utiliser des fonctions telles que getName()
, getPrice()
, etc. du produit pour récupérer des informations produit dans Magento 2.
Quelqu'un peut-il me montrer comment y parvenir?
Réponses:
Dans Magento 2 a proposé d'utiliser la couche de service pour cela. Essayez d'utiliser la \Magento\Catalog\Model\ProductRepository::getById
méthode pour obtenir le produit par identifiant
Magento 2 recommande d'utiliser Factories
pour charger tous les modèles. Voici comment procéder:
Au-dessus de votre classe, ajoutez cette ligne:
use Magento\Catalog\Model\ProductFactory;
Créez maintenant la propriété de classe:
protected $productFactory;
Dans votre constructeur, ajoutez la dépendance:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Maintenant, chargez le produit comme ci-dessous:
$_product = $this->productFactory->create()->load(<product_id>);
En plus des autres réponses, je suggère fortement d'utiliser les méthodes de contrats de service suivantes:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: pour charger un produit par id\Magento\Catalog\Api\ProductRepositoryInterface::get
: charger un produit par skuLe moyen le plus Magento d'y parvenir, bien qu'il soit difficile de le dire car la plupart des emplacements dans le code principal le font différemment, est d'utiliser le référentiel du produit.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
J'ai récupéré les détails du produit en utilisant la fonction dans la page d'affichage du produit comme ci-dessous.
Ici Sm / Sawyer est mon thème.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();