コード例 #1
0
ファイル: Helper.php プロジェクト: ktplKunj/TestMagento
 /**
  * @param \Magento\Wishlist\Model\Wishlist $wishlist
  * @param array $productSkuList
  * @return void
  */
 public function addProductsToWishlist(\Magento\Wishlist\Model\Wishlist $wishlist, $productSkuList)
 {
     $shouldSave = false;
     foreach ($productSkuList as $productSku) {
         /** @var \Magento\Catalog\Model\Product $product */
         $product = $this->productFactory->create();
         $productId = $product->getIdBySku($productSku);
         $product->load($productId);
         if (empty($productId)) {
             continue;
         } elseif (!$shouldSave) {
             $shouldSave = true;
         }
         $buyRequest = ['product' => $productId, 'qty' => 1];
         if (!$product->isVisibleInSiteVisibility()) {
             $parentIds = $this->productIndexer->getRelationsByChild($productId);
             if ($parentIds) {
                 $buyRequest['product'] = $parentIds[0];
                 /** @var \Magento\Catalog\Model\Product $parentProduct */
                 $parentProduct = $this->productFactory->create();
                 $parentProduct->load($buyRequest['product']);
                 $configurableCode = \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE;
                 if ($parentProduct->getTypeId() == $configurableCode) {
                     /** @var \Magento\ConfigurableProduct\Model\Product\Type\Configurable $productType */
                     $productType = $parentProduct->getTypeInstance();
                     $buyRequest['super_attribute'] = [];
                     foreach ($productType->getConfigurableAttributes($parentProduct) as $attribute) {
                         $attributeCode = $attribute->getProductAttribute()->getAttributeCode();
                         $buyRequest['super_attribute'][$attribute->getAttributeId()] = $product->getData($attributeCode);
                     }
                     $product = $parentProduct;
                 } else {
                     continue;
                 }
             } else {
                 continue;
             }
         }
         $wishlist->addNewItem($product, $buyRequest, true);
     }
     if ($shouldSave) {
         $wishlist->save();
     }
 }