Je reçois l'attribut de produit du devis. Il semble qu'il y ait une mauvaise valeur. Veuillez vérifier mon code ci-dessous.
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$itemsCollection = $cart->getQuote()->getItemsCollection();
$itemsVisible = $cart->getQuote()->getAllVisibleItems();
$items = $cart->getQuote()->getAllItems();
$product_object = $objectManager->create('Magento\Catalog\Model\Product');
foreach($itemsVisible as $item){
if($option = $item->getOptionByCode('simple_product')) {
$productId = $option->getProduct()->getId();
$item_s = $product_object->load($productId);
echo $screen_size = $productId."/".$item_s->getScreenFrameSize()."/".$item_s->getFiberglassScreenRollSize()."/".$item_s->getScreenCornerSize()."<br>";
}
}
Veuillez vérifier l'image ci-dessous pour une meilleure compréhension. Y a-t-il une erreur dans ma collection ou boucle?
Aidez-moi, s'il vous plaît!!!
magento2
cart
sales-quote
Sunny Rahevar
la source
la source
$objectManager->create('Magento\Catalog\Model\Product');
dans la boucle foreach. Vérifiez ma réponseRéponses:
Parce que vous utilisez le même objet à chaque fois dans foreach. Vous devez créer un nouvel objet dans la boucle foreach. Donc, votre code final ressemble à ceci:
REMARQUE: n'utilisez pas le gestionnaire d'objets directement dans le code. Utiliser l'usine du produit car l'usine créera à chaque fois un nouvel objet.
la source
Veuillez essayer quelque chose comme ça
la source
Je suppose que vous devez créer un nouvel objet produit au lieu de le réutiliser dans votre boucle foreach. En réutilisant l'objet produit, vous pouvez obtenir de tels effets secondaires même si la méthode "charger" suggère que toutes les données seraient écrasées. Vérifiez l'utilisation des attributs personnalisés dans
AbstractExtensibleModel
la source