コード例 #1
0
ファイル: SaveHandler.php プロジェクト: Doability/magento2dev
 /**
  * Save attributes for configurable product
  *
  * @param ProductInterface $product
  * @param array $attributes
  * @return array
  */
 private function saveConfigurableProductAttributes(ProductInterface $product, array $attributes)
 {
     $ids = [];
     /** @var \Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute $attribute */
     foreach ($attributes as $attribute) {
         $attribute->setId(null);
         $ids[] = $this->optionRepository->save($product->getSku(), $attribute);
     }
     return $ids;
 }
コード例 #2
0
 /**
  * @param \Magento\Catalog\Api\Data\ProductInterface $product
  * @param \Magento\ConfigurableProduct\Api\Data\OptionInterface[] $options
  * @return $this
  */
 protected function saveConfigurableProductOptions(\Magento\Catalog\Api\Data\ProductInterface $product, array $options)
 {
     $existingOptionIds = [];
     if ($product->getExtensionAttributes() !== null) {
         $extensionAttributes = $product->getExtensionAttributes();
         if ($extensionAttributes->getConfigurableProductOptions() !== null) {
             $existingOptions = $extensionAttributes->getConfigurableProductOptions();
             foreach ($existingOptions as $option) {
                 $existingOptionIds[] = $option->getId();
             }
         }
     }
     $updatedOptionIds = [];
     foreach ($options as $option) {
         if ($option->getId()) {
             $updatedOptionIds[] = $option->getId();
         }
         $this->optionRepository->save($product->getSku(), $option);
     }
     $optionIdsToDelete = array_diff($existingOptionIds, $updatedOptionIds);
     foreach ($optionIdsToDelete as $optionId) {
         $this->optionRepository->deleteById($product->getSku(), $optionId);
     }
     return $this;
 }
コード例 #3
0
 /**
  * Save attributes for configurable product
  *
  * @param ProductInterface $product
  * @param array $attributes
  * @return array
  */
 private function saveConfigurableProductAttributes(ProductInterface $product, array $attributes)
 {
     $ids = [];
     /** @var \Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute $attribute */
     foreach ($attributes as $attribute) {
         $eavAttribute = $this->productAttributeRepository->get($attribute->getAttributeId());
         $data = $attribute->getData();
         $attribute->loadByProductAndAttribute($product, $eavAttribute);
         $attribute->setData(array_replace_recursive($attribute->getData(), $data));
         $ids[] = $this->optionRepository->save($product->getSku(), $attribute);
     }
     return $ids;
 }