当前位置: 首页>>代码示例>>PHP>>正文


PHP Product::isDataForPriceIndexerWasChanged方法代码示例

本文整理汇总了PHP中Magento\Catalog\Helper\Product::isDataForPriceIndexerWasChanged方法的典型用法代码示例。如果您正苦于以下问题:PHP Product::isDataForPriceIndexerWasChanged方法的具体用法?PHP Product::isDataForPriceIndexerWasChanged怎么用?PHP Product::isDataForPriceIndexerWasChanged使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Magento\Catalog\Helper\Product的用法示例。


在下文中一共展示了Product::isDataForPriceIndexerWasChanged方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: priceReindexCallback

 /**
  * Callback for entity reindex
  *
  * @return void
  */
 public function priceReindexCallback()
 {
     if ($this->isObjectNew() || $this->_catalogProduct->isDataForPriceIndexerWasChanged($this)) {
         $this->_productPriceIndexerProcessor->reindexRow($this->getEntityId());
     }
 }
开发者ID:nblair,项目名称:magescotch,代码行数:11,代码来源:Product.php

示例2: execute

 /**
  * Update product attributes
  *
  * @return \Magento\Backend\Model\View\Result\Redirect
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function execute()
 {
     if (!$this->_validateProducts()) {
         return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['_current' => true]);
     }
     /* Collect Data */
     $inventoryData = $this->getRequest()->getParam('inventory', []);
     $attributesData = $this->getRequest()->getParam('attributes', []);
     $websiteRemoveData = $this->getRequest()->getParam('remove_website_ids', []);
     $websiteAddData = $this->getRequest()->getParam('add_website_ids', []);
     /* Prepare inventory data item options (use config settings) */
     $options = $this->_objectManager->get('Magento\\CatalogInventory\\Api\\StockConfigurationInterface')->getConfigItemOptions();
     foreach ($options as $option) {
         if (isset($inventoryData[$option]) && !isset($inventoryData['use_config_' . $option])) {
             $inventoryData['use_config_' . $option] = 0;
         }
     }
     try {
         $storeId = $this->attributeHelper->getSelectedStoreId();
         if ($attributesData) {
             $dateFormat = $this->_objectManager->get('Magento\\Framework\\Stdlib\\DateTime\\TimezoneInterface')->getDateFormat(\IntlDateFormatter::SHORT);
             foreach ($attributesData as $attributeCode => $value) {
                 $attribute = $this->_objectManager->get('Magento\\Eav\\Model\\Config')->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode);
                 if (!$attribute->getAttributeId()) {
                     unset($attributesData[$attributeCode]);
                     continue;
                 }
                 if ($attribute->getBackendType() == 'datetime') {
                     if (!empty($value)) {
                         $filterInput = new \Zend_Filter_LocalizedToNormalized(['date_format' => $dateFormat]);
                         $filterInternal = new \Zend_Filter_NormalizedToLocalized(['date_format' => \Magento\Framework\Stdlib\DateTime::DATE_INTERNAL_FORMAT]);
                         $value = $filterInternal->filter($filterInput->filter($value));
                     } else {
                         $value = null;
                     }
                     $attributesData[$attributeCode] = $value;
                 } elseif ($attribute->getFrontendInput() == 'multiselect') {
                     // Check if 'Change' checkbox has been checked by admin for this attribute
                     $isChanged = (bool) $this->getRequest()->getPost($attributeCode . '_checkbox');
                     if (!$isChanged) {
                         unset($attributesData[$attributeCode]);
                         continue;
                     }
                     if (is_array($value)) {
                         $value = implode(',', $value);
                     }
                     $attributesData[$attributeCode] = $value;
                 }
             }
             $this->_objectManager->get('Magento\\Catalog\\Model\\Product\\Action')->updateAttributes($this->attributeHelper->getProductIds(), $attributesData, $storeId);
         }
         if ($inventoryData) {
             // TODO why use ObjectManager?
             /** @var \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry */
             $stockRegistry = $this->_objectManager->create('Magento\\CatalogInventory\\Api\\StockRegistryInterface');
             /** @var \Magento\CatalogInventory\Api\StockItemRepositoryInterface $stockItemRepository */
             $stockItemRepository = $this->_objectManager->create('Magento\\CatalogInventory\\Api\\StockItemRepositoryInterface');
             foreach ($this->attributeHelper->getProductIds() as $productId) {
                 $stockItemDo = $stockRegistry->getStockItem($productId, $this->attributeHelper->getStoreWebsiteId($storeId));
                 if (!$stockItemDo->getProductId()) {
                     $inventoryData[] = $productId;
                 }
                 $stockItemId = $stockItemDo->getId();
                 $this->dataObjectHelper->populateWithArray($stockItemDo, $inventoryData, '\\Magento\\CatalogInventory\\Api\\Data\\StockItemInterface');
                 $stockItemDo->setItemId($stockItemId);
                 $stockItemRepository->save($stockItemDo);
             }
             $this->_stockIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
         }
         if ($websiteAddData || $websiteRemoveData) {
             /* @var $actionModel \Magento\Catalog\Model\Product\Action */
             $actionModel = $this->_objectManager->get('Magento\\Catalog\\Model\\Product\\Action');
             $productIds = $this->attributeHelper->getProductIds();
             if ($websiteRemoveData) {
                 $actionModel->updateWebsites($productIds, $websiteRemoveData, 'remove');
             }
             if ($websiteAddData) {
                 $actionModel->updateWebsites($productIds, $websiteAddData, 'add');
             }
             $this->_eventManager->dispatch('catalog_product_to_website_change', ['products' => $productIds]);
         }
         $this->messageManager->addSuccess(__('A total of %1 record(s) were updated.', count($this->attributeHelper->getProductIds())));
         $this->_productFlatIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
         if ($this->_catalogProduct->isDataForPriceIndexerWasChanged($attributesData) || !empty($websiteRemoveData) || !empty($websiteAddData)) {
             $this->_productPriceIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
         }
     } catch (\Magento\Framework\Exception\LocalizedException $e) {
         $this->messageManager->addError($e->getMessage());
     } catch (\Exception $e) {
         $this->messageManager->addException($e, __('Something went wrong while updating the product(s) attributes.'));
     }
     return $this->resultRedirectFactory->create()->setPath('catalog/product/', ['store' => $this->attributeHelper->getSelectedStoreId()]);
//.........这里部分代码省略.........
开发者ID:pradeep-wagento,项目名称:magento2,代码行数:101,代码来源:Save.php

示例3: execute

 /**
  * Update product attributes
  *
  * @return void
  */
 public function execute()
 {
     if (!$this->_validateProducts()) {
         return;
     }
     /* Collect Data */
     $inventoryData = $this->getRequest()->getParam('inventory', array());
     $attributesData = $this->getRequest()->getParam('attributes', array());
     $websiteRemoveData = $this->getRequest()->getParam('remove_website_ids', array());
     $websiteAddData = $this->getRequest()->getParam('add_website_ids', array());
     /* Prepare inventory data item options (use config settings) */
     $options = $this->_objectManager->get('Magento\\CatalogInventory\\Helper\\Data')->getConfigItemOptions();
     foreach ($options as $option) {
         if (isset($inventoryData[$option]) && !isset($inventoryData['use_config_' . $option])) {
             $inventoryData['use_config_' . $option] = 0;
         }
     }
     try {
         if ($attributesData) {
             $dateFormat = $this->_objectManager->get('Magento\\Framework\\Stdlib\\DateTime\\TimezoneInterface')->getDateFormat(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::FORMAT_TYPE_SHORT);
             $storeId = $this->attributeHelper->getSelectedStoreId();
             foreach ($attributesData as $attributeCode => $value) {
                 $attribute = $this->_objectManager->get('Magento\\Eav\\Model\\Config')->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode);
                 if (!$attribute->getAttributeId()) {
                     unset($attributesData[$attributeCode]);
                     continue;
                 }
                 if ($attribute->getBackendType() == 'datetime') {
                     if (!empty($value)) {
                         $filterInput = new \Zend_Filter_LocalizedToNormalized(array('date_format' => $dateFormat));
                         $filterInternal = new \Zend_Filter_NormalizedToLocalized(array('date_format' => \Magento\Framework\Stdlib\DateTime::DATE_INTERNAL_FORMAT));
                         $value = $filterInternal->filter($filterInput->filter($value));
                     } else {
                         $value = null;
                     }
                     $attributesData[$attributeCode] = $value;
                 } elseif ($attribute->getFrontendInput() == 'multiselect') {
                     // Check if 'Change' checkbox has been checked by admin for this attribute
                     $isChanged = (bool) $this->getRequest()->getPost($attributeCode . '_checkbox');
                     if (!$isChanged) {
                         unset($attributesData[$attributeCode]);
                         continue;
                     }
                     if (is_array($value)) {
                         $value = implode(',', $value);
                     }
                     $attributesData[$attributeCode] = $value;
                 }
             }
             $this->_objectManager->get('Magento\\Catalog\\Model\\Product\\Action')->updateAttributes($this->attributeHelper->getProductIds(), $attributesData, $storeId);
         }
         if ($inventoryData) {
             /** @var \Magento\CatalogInventory\Service\V1\StockItemService $stockItemService */
             $stockItemService = $this->_objectManager->create('Magento\\CatalogInventory\\Service\\V1\\StockItemService');
             foreach ($this->_helper->getProductIds() as $productId) {
                 $stockItemDo = $stockItemService->getStockItem($productId);
                 if (!$stockItemDo->getProductId()) {
                     $inventoryData[] = $productId;
                 }
                 $stockItemService->saveStockItem($this->stockItemBuilder->mergeDataObjectWithArray($stockItemDo, $inventoryData));
             }
             $this->_stockIndexerProcessor->reindexList($this->_helper->getProductIds());
         }
         if ($websiteAddData || $websiteRemoveData) {
             /* @var $actionModel \Magento\Catalog\Model\Product\Action */
             $actionModel = $this->_objectManager->get('Magento\\Catalog\\Model\\Product\\Action');
             $productIds = $this->attributeHelper->getProductIds();
             if ($websiteRemoveData) {
                 $actionModel->updateWebsites($productIds, $websiteRemoveData, 'remove');
             }
             if ($websiteAddData) {
                 $actionModel->updateWebsites($productIds, $websiteAddData, 'add');
             }
             $this->_eventManager->dispatch('catalog_product_to_website_change', array('products' => $productIds));
             $this->messageManager->addNotice(__('Please refresh "Catalog URL Rewrites" and "Product Attributes" in System -> ' . '<a href="%1">Index Management</a>.', $this->getUrl('adminhtml/process/list')));
         }
         $this->messageManager->addSuccess(__('A total of %1 record(s) were updated.', count($this->attributeHelper->getProductIds())));
         $this->_productFlatIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
         if ($this->_catalogProduct->isDataForPriceIndexerWasChanged($attributesData) || !empty($websiteRemoveData) || !empty($websiteAddData)) {
             $this->_productPriceIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
         }
     } catch (\Magento\Framework\Model\Exception $e) {
         $this->messageManager->addError($e->getMessage());
     } catch (\Exception $e) {
         $this->messageManager->addException($e, __('Something went wrong while updating the product(s) attributes.'));
     }
     $this->_redirect('catalog/product/', array('store' => $this->attributeHelper->getSelectedStoreId()));
 }
开发者ID:Atlis,项目名称:docker-magento2,代码行数:93,代码来源:Save.php


注:本文中的Magento\Catalog\Helper\Product::isDataForPriceIndexerWasChanged方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。