Je travaille sur l'extension de paiement M2, notre marchand a besoin de nous pour envoyer les détails des articles avec la commande
Tout fonctionne bien mais $order->getAllItems();
ou $order->getAllVisibleItems();
renvoyer des produits parents simples et configurables afin
si j'ai 2 produits dans le panier
- 1 produit simple
- 1 Associé de produit configurable
donc au lieu d'obtenir deux produits, j'en reçois trois; un produit simple et associé et son produit parent;
Je peux essayer d'extraire les produits corrects mais je suis sûr que ce doit être un autre
/** @var \Magento\Sales\Model\Order $order */
$order = $payment->getOrder();
/**
* Get All Items of Products
*/
$productItems = $order->getAllItems() // returning 3 products where I have 2 in cart
$productItemsTest = $order->getAllVisibleItems(); // returning 3 products where I have 2 in cart
la source
La meilleure façon d'obtenir des articles de commande est d'utiliser
$order->getAllVisibleItems()
Expliqué par fschmengler ci-dessus,
getAllItems():
Cette fonction renvoie également un tableau de tous les articles du panier avec un produit simple de configuration.Vous obtenez trois produits parce que vous l'utilisez,
$order->getAllItems()
vous devez utiliser la$order->getAllVisibleItems()
méthode pour obtenir le produit original.Vous pouvez vérifier plus de référence à partir du fichier
vendor/magento/module-quote/Model/Quote.php
la source
vous pouvez utiliser la boucle d'élément et exclure l'élément enfant par le code suivant:
la source