Voici mon observateur:
public function execute(\Magento\Framework\Event\Observer $observer)
{
$orderIds = $observer->getEvent()->getOrderIds();
$order = $this->_orderRepositoryInterface->get($orderIds[0]);
$items =$order->getAllVisibleItems();
$productQuantity = array();
$productPrice = array();
$productName = array();
$productIds = array();
foreach($items as $item) {
$productIds[]= $item->getProductId();
$productName[]= $item->getSku();
$productPrice[] = $item->getPrice();
$productQuantity[]= floor($item->getQtyOrdered());
}
}
Comment puis-je obtenir l'image du produit et l'URL du produit à partir de l'article?
magento2
product
event-observer
product-images
Ramkishan Suthar
la source
la source
Réponses:
Cette méthode n'est peut-être pas la meilleure façon d'obtenir une image de produit.
Injectez
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
dans notre constructeur.Nous pouvons obtenir l'image:
la source
pub/media/catalog/product
Si vous voulez que l'URL frontend publiée / cache d'une image pour une vue de magasin spécifique (comme je l'ai fait), cela fonctionne pour moi:
Ensuite, partout où vous avez besoin d'obtenir l'URL du frontend de l'image:
Vous pouvez également sélectionner d'autres types d'images
product_thumbnail_image
: consultezmagento/theme-frontend-luma/etc/view.xml
la liste des images de produits disponibles ou créez la vôtre dans unview.xml
fichier.la source
Si vous devez renvoyer une URL de produit, elle devrait ressembler à ceci:
la source
C'est comme ça que je l'ai fait. c'est assez efficace et propre:
1) Tout d'abord, vous devez injecter les classes suivantes:
2) Ensuite, créez une méthode getImageUrl avec le code ci-dessous:
Remarque: Le code "appEmulation" n'est nécessaire que lorsque vous effectuez cet appel depuis l' administrateur ou pour une API . Sinon, vous obtiendrez l'erreur ci-dessous (ou similaire):
3) Appelez getImageUrl en passant l'objet produit et le type d'image que vous souhaitez (en fonction de votre fichier view.xml )
la source
Pour obtenir l'URL de l'image personnalisée, j'ai utilisé ce code. Donc, si l'image ne se ferme pas, elle chargera l'image du thème par défaut.
la source