C'est assez basique, mais je ne trouve pas d'exemple de travail sur Stackexchange ou google. Je veux charger un produit depuis un assistant ou un bloc. J'ai déjà essayé des choses comme:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('\Magento\Catalog\Api\Data\ProductInterface');
$product->get('<SKU>');
$product->getName();
Cela ne renvoie rien. J'ai également essayé de charger les modèles et les API disponibles, mais rien ne semble fonctionner avec les SKU.
Use Magento\Catalog\Api\ProductRepositoryInterface to get it in your constructor.
? Que dois-je faire? Merci beaucoupAu lieu d'utiliser directement le gestionnaire d'objets, injectez ProductFactory:
Ensuite, utilisez-le comme ceci:
ou pour effectuer un chargement complet (ce qui précède le charge à l'aide d'une collection):
la source
load()
et les collections sont la méthode "Magento 1", mieux utiliser le référentiel comme suggéré par @RiccardoT.Api/Data/Product
), qui est un modèle de produit converti en un DTO simplifié. Quelque chose à considérer, car ils sont très différents.$product = $this->productFactory->create(); $product->load($product->getIdBySku($sku)); $product->getThumbnailUrl()
pour afficher l'image miniature du produit, mais cela ne fonctionne pas.productFactory
J'aime la réponse de @ phoenix128-riccardot, mais ajouterais une exception, juste au cas où le produit n'existe pas:
Je n'ai pas pu l'ajouter en tant que commentaire (réputation trop faible), désolé.
la source
Vous pouvez essayer ça
la source
Essaye ça:
la source
Utilisation de l'injection de dépendance (DI)
Voici l'exemple de code pour obtenir les informations produit par ID de produit et SKU dans Magento 2 à l'aide de l'injection de dépendance.
Dans ce cas, nous pourrions avoir besoin d'injecter l'objet de la classe \ Magento \ Catalog \ Model \ ProductRepository dans le constructeur de la classe de bloc de notre module et d'y accéder à partir du fichier de vue (.phtml).
Exemple de chemin de fichier: app / code / YourCompanyName / YourModuleName / Block / YourCustomBlock.php
Maintenant, nous pouvons utiliser les fonctions de notre fichier de vue (.phtml) comme suit.
Utilisation du gestionnaire d'objets
Voici l'exemple de code pour obtenir les informations produit par ID produit et SKU dans Magento 2 à l'aide du gestionnaire d'objets.
la source
la source