Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
AbstractType Class Reference
Inheritance diagram for AbstractType:
Type Simple Virtual Configurable Grouped Type Backend

Public Member Functions

 deleteTypeSpecificData (\Magento\Catalog\Model\Product $product)
 
 __construct (\Magento\Catalog\Model\Product\Option $catalogProductOption, \Magento\Eav\Model\Config $eavConfig, \Magento\Catalog\Model\Product\Type $catalogProductType, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\MediaStorage\Helper\File\Storage\Database $fileStorageDb, \Magento\Framework\Filesystem $filesystem, \Magento\Framework\Registry $coreRegistry, \Psr\Log\LoggerInterface $logger, ProductRepositoryInterface $productRepository, \Magento\Framework\Serialize\Serializer\Json $serializer=null)
 
 setTypeId ($typeId)
 
 getRelationInfo ()
 
 getChildrenIds ($parentId, $required=true)
 
 getParentIdsByChild ($childId)
 
 getSetAttributes ($product)
 
 attributesCompare ($attributeOne, $attributeTwo)
 
 getEditableAttributes ($product)
 
 getAttributeById ($attributeId, $product)
 
 isVirtual ($product)
 
 isSalable ($product)
 
 processConfiguration (\Magento\Framework\DataObject $buyRequest, $product, $processMode=self::PROCESS_MODE_LITE)
 
 prepareForCartAdvanced (\Magento\Framework\DataObject $buyRequest, $product, $processMode=null)
 
 prepareForCart (\Magento\Framework\DataObject $buyRequest, $product)
 
 addFileQueue ($queueOptions)
 
 getSpecifyOptionMessage ()
 
 checkProductBuyState ($product)
 
 getOrderOptions ($product)
 
 save ($product)
 
 beforeSave ($product)
 
 isComposite ($product)
 
 canConfigure ($product)
 
 canUseQtyDecimals ()
 
 getSku ($product)
 
 getOptionSku ($product, $sku='')
 
 getWeight ($product)
 
 hasOptions ($product)
 
 updateQtyOption ($options, \Magento\Framework\DataObject $option, $value, $product)
 
 hasRequiredOptions ($product)
 
 getStoreFilter ($product)
 
 setStoreFilter ($store, $product)
 
 getForceChildItemQtyChanges ($product)
 
 prepareQuoteItemQty ($qty, $product)
 
 assignProductToOption ($optionProduct, $option, $product)
 
 setConfig ($config)
 
 getSearchableData ($product)
 
 getProductsToPurchaseByReqGroups ($product)
 
 processBuyRequest ($product, $buyRequest)
 
 checkProductConfiguration ($product, $buyRequest)
 
 hasWeight ()
 
 setImageFromChildProduct (\Magento\Catalog\Model\Product $product)
 
 getIdentities (\Magento\Catalog\Model\Product $product)
 
 getAssociatedProducts ($product)
 
 isPossibleBuyFromList ($product)
 

Data Fields

const CALCULATE_CHILD = 0
 
const CALCULATE_PARENT = 1
 
const SHIPMENT_SEPARATELY = 1
 
const SHIPMENT_TOGETHER = 0
 
const PROCESS_MODE_FULL = 'full'
 
const PROCESS_MODE_LITE = 'lite'
 
const OPTION_PREFIX = 'option_'
 

Protected Member Functions

 _isStrictProcessMode ($processMode)
 
 _prepareOptions (\Magento\Framework\DataObject $buyRequest, $product, $processMode)
 
 _removeNotApplicableAttributes ($product)
 

Protected Attributes

 $_typeId
 
 $_editableAttributes
 
 $_isComposite = false
 
 $_canConfigure = false
 
 $_canUseQtyDecimals = true
 
 $_fileQueue = []
 
 $_filesystem
 
 $_fileStorageDb
 
 $_cacheProductSetAttributes = '_cache_instance_product_set_attributes'
 
 $_coreRegistry
 
 $_eventManager
 
 $_logger
 
 $_catalogProductType
 
 $_eavConfig
 
 $_catalogProductOption
 
 $productRepository
 
 $serializer
 

Detailed Description

@api Abstract model for product type implementation @SuppressWarnings(PHPMD.ExcessivePublicCount) @SuppressWarnings(PHPMD.TooManyFields) @SuppressWarnings(PHPMD.ExcessiveClassComplexity) @SuppressWarnings(PHPMD.CouplingBetweenObjects)

Since
100.0.2

Definition at line 22 of file AbstractType.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Catalog\Model\Product\Option  $catalogProductOption,
\Magento\Eav\Model\Config  $eavConfig,
\Magento\Catalog\Model\Product\Type  $catalogProductType,
\Magento\Framework\Event\ManagerInterface  $eventManager,
\Magento\MediaStorage\Helper\File\Storage\Database  $fileStorageDb,
\Magento\Framework\Filesystem  $filesystem,
\Magento\Framework\Registry  $coreRegistry,
\Psr\Log\LoggerInterface  $logger,
ProductRepositoryInterface  $productRepository,
\Magento\Framework\Serialize\Serializer\Json  $serializer = null 
)

Construct

Parameters
\Magento\Catalog\Model\Product\Option$catalogProductOption
\Magento\Eav\Model\Config$eavConfig
\Magento\Catalog\Model\Product\Type$catalogProductType
\Magento\Framework\Event\ManagerInterface$eventManager
\Magento\MediaStorage\Helper\File\Storage\Database$fileStorageDb
\Magento\Framework\Filesystem$filesystem
\Magento\Framework\Registry$coreRegistry
\Psr\Log\LoggerInterface$logger
ProductRepositoryInterface$productRepository
\Magento\Framework\Serialize\Serializer\Json | null$serializer@SuppressWarnings(PHPMD.ExcessiveParameterList)

Definition at line 189 of file AbstractType.php.

200  {
201  $this->_catalogProductOption = $catalogProductOption;
202  $this->_eavConfig = $eavConfig;
203  $this->_catalogProductType = $catalogProductType;
204  $this->_coreRegistry = $coreRegistry;
205  $this->_eventManager = $eventManager;
206  $this->_fileStorageDb = $fileStorageDb;
207  $this->_filesystem = $filesystem;
208  $this->_logger = $logger;
209  $this->productRepository = $productRepository;
211  ->get(\Magento\Framework\Serialize\Serializer\Json::class);
212  }
$logger
$filesystem

Member Function Documentation

◆ _isStrictProcessMode()

_isStrictProcessMode (   $processMode)
protected

Check if current process mode is strict

Parameters
string$processMode
Returns
bool

Definition at line 552 of file AbstractType.php.

553  {
554  return $processMode == self::PROCESS_MODE_FULL;
555  }

◆ _prepareOptions()

_prepareOptions ( \Magento\Framework\DataObject  $buyRequest,
  $product,
  $processMode 
)
protected

Process custom defined options for product

Parameters
\Magento\Framework\DataObject$buyRequest
\Magento\Catalog\Model\Product$product
string$processMode
Returns
array
Exceptions
LocalizedException

Definition at line 576 of file AbstractType.php.

577  {
578  $transport = new \stdClass();
579  $transport->options = [];
580  $options = null;
581  if ($product->getHasOptions()) {
582  $options = $product->getOptions();
583  }
584  if ($options !== null) {
585  $results = [];
586  foreach ($options as $option) {
587  /* @var $option \Magento\Catalog\Model\Product\Option */
588  try {
589  $group = $option->groupFactory($option->getType())
590  ->setOption($option)
591  ->setProduct($product)
592  ->setRequest($buyRequest)
593  ->setProcessMode($processMode)
594  ->validateUserValue($buyRequest->getOptions());
595  } catch (LocalizedException $e) {
596  $results[] = $e->getMessage();
597  continue;
598  }
599 
600  $preparedValue = $group->prepareForCart();
601  if ($preparedValue !== null) {
602  $transport->options[$option->getId()] = $preparedValue;
603  }
604  }
605  if (count($results) > 0) {
606  throw new LocalizedException(__(implode("\n", $results)));
607  }
608  }
609 
610  $eventName = sprintf('catalog_product_type_prepare_%s_options', $processMode);
611  $this->_eventManager->dispatch(
612  $eventName,
613  ['transport' => $transport, 'buy_request' => $buyRequest, 'product' => $product]
614  );
615  return $transport->options;
616  }
$results
Definition: popup.phtml:13
$group
Definition: sections.phtml:16
__()
Definition: __.php:13
foreach($product->getExtensionAttributes() ->getBundleProductOptions() as $option) $buyRequest

◆ _removeNotApplicableAttributes()

_removeNotApplicableAttributes (   $product)
protected

Remove don't applicable attributes data

Parameters
\Magento\Catalog\Model\Product$product
Returns
void

Definition at line 722 of file AbstractType.php.

723  {
724  $entityType = $product->getResource()->getEntityType();
725  foreach ($this->_eavConfig->getEntityAttributes($entityType, $product) as $attribute) {
726  $applyTo = $attribute->getApplyTo();
727  if (is_array($applyTo) && count($applyTo) > 0 && !in_array($product->getTypeId(), $applyTo)) {
728  $product->unsetData($attribute->getAttributeCode());
729  }
730  }
731  }

◆ addFileQueue()

addFileQueue (   $queueOptions)

Add file to File Queue

Parameters
array$queueOptionsArray of File Queue (eg. ['operation'=>'move', 'src_name'=>'filename', 'dst_name'=>'filename2'])
Returns
void

Definition at line 541 of file AbstractType.php.

542  {
543  $this->_fileQueue[] = $queueOptions;
544  }

◆ assignProductToOption()

assignProductToOption (   $optionProduct,
  $option,
  $product 
)

Implementation of product specify logic of which product needs to be assigned to option. For example if product which was added to option already removed from catalog.

Parameters
\Magento\Catalog\Model\Product$optionProduct
\Magento\Quote\Model\Quote\Item\Option$option
\Magento\Catalog\Model\Product$product
Returns
$this

Definition at line 950 of file AbstractType.php.

951  {
952  if ($optionProduct) {
953  $option->setProduct($optionProduct);
954  } else {
955  $option->setProduct($product);
956  }
957 
958  return $this;
959  }

◆ attributesCompare()

attributesCompare (   $attributeOne,
  $attributeTwo 
)

Compare attributes sorting

Parameters
\Magento\Catalog\Model\Entity\Attribute$attributeOne
\Magento\Catalog\Model\Entity\Attribute$attributeTwo
Returns
int

Definition at line 290 of file AbstractType.php.

291  {
292  $sortOne = $attributeOne->getGroupSortPath() * 1000 + $attributeOne->getSortPath() * 0.0001;
293  $sortTwo = $attributeTwo->getGroupSortPath() * 1000 + $attributeTwo->getSortPath() * 0.0001;
294 
295  return $sortOne <=> $sortTwo;
296  }

◆ beforeSave()

beforeSave (   $product)

Before save type related data

Parameters
\Magento\Catalog\Model\Product$product
Returns
$this

Definition at line 739 of file AbstractType.php.

740  {
742  $product->canAffectOptions(true);
743  return $this;
744  }

◆ canConfigure()

canConfigure (   $product)

Check if product can be configured

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 765 of file AbstractType.php.

◆ canUseQtyDecimals()

canUseQtyDecimals ( )

Check if product qty is fractional number

Returns
bool

Definition at line 775 of file AbstractType.php.

◆ checkProductBuyState()

checkProductBuyState (   $product)

Check if product can be bought

Parameters
\Magento\Catalog\Model\Product$product
Returns
$this
Exceptions

Definition at line 625 of file AbstractType.php.

626  {
627  if (!$product->getSkipCheckRequiredOption() && $product->getHasOptions()) {
628  $options = $product->getProductOptionsCollection();
629  foreach ($options as $option) {
630  if ($option->getIsRequire()) {
631  $customOption = $product->getCustomOption(self::OPTION_PREFIX . $option->getId());
632  if (!$customOption || strlen($customOption->getValue()) == 0) {
633  $product->setSkipCheckRequiredOption(true);
634  throw new \Magento\Framework\Exception\LocalizedException(
635  __('The product has required options. Enter the options and try again.')
636  );
637  }
638  }
639  }
640  }
641 
642  return $this;
643  }
$customOption
Definition: products.php:73
__()
Definition: __.php:13

◆ checkProductConfiguration()

checkProductConfiguration (   $product,
  $buyRequest 
)

Check product's options configuration

Parameters
\Magento\Catalog\Model\Product$product
\Magento\Framework\DataObject$buyRequest
Returns
array

cloning product because prepareForCart() method will modify it

Definition at line 1035 of file AbstractType.php.

1036  {
1037  $errors = [];
1038 
1039  try {
1043  $productForCheck = clone $product;
1044  $buyRequestForCheck = clone $buyRequest;
1045  $result = $this->prepareForCart($buyRequestForCheck, $productForCheck);
1046 
1047  if (is_string($result)) {
1048  $errors[] = $result;
1049  }
1050  } catch (\Magento\Framework\Exception\LocalizedException $e) {
1051  $errors[] = $e->getMessage();
1052  } catch (\Exception $e) {
1053  $this->_logger->critical($e);
1054  $errors[] = __('Something went wrong while processing the request.');
1055  }
1056 
1057  return $errors;
1058  }
__()
Definition: __.php:13
foreach($product->getExtensionAttributes() ->getBundleProductOptions() as $option) $buyRequest
prepareForCart(\Magento\Framework\DataObject $buyRequest, $product)
$errors
Definition: overview.phtml:9

◆ deleteTypeSpecificData()

deleteTypeSpecificData ( \Magento\Catalog\Model\Product  $product)
abstract

Delete data specific for this product type

Parameters
\Magento\Catalog\Model\Product$product
Returns
void

◆ getAssociatedProducts()

getAssociatedProducts (   $product)
Parameters
\Magento\Catalog\Model\Product\Type\AbstractType$product
Returns
array @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 1099 of file AbstractType.php.

1100  {
1101  return [];
1102  }

◆ getAttributeById()

getAttributeById (   $attributeId,
  $product 
)

Retrieve product attribute by identifier

Parameters
int$attributeId
\Magento\Catalog\Model\Product$product
Returns
\Magento\Catalog\Model\ResourceModel\Eav\Attribute|null

Definition at line 316 of file AbstractType.php.

317  {
318  if ($attributeId) {
319  foreach ($this->getSetAttributes($product) as $attribute) {
320  if ($attribute->getId() == $attributeId) {
321  return $attribute;
322  }
323  }
324  }
325  return null;
326  }

◆ getChildrenIds()

getChildrenIds (   $parentId,
  $required = true 
)

Retrieve Required children ids Return grouped array, ex array( group => array(ids) )

@deplacated TODO: refactor to child relation manager

Parameters
int$parentId
bool$required
Returns
array @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 249 of file AbstractType.php.

250  {
251  return [];
252  }

◆ getEditableAttributes()

getEditableAttributes (   $product)

Retrieve product type attributes

Parameters
\Magento\Catalog\Model\Product$product
Returns
\Magento\Eav\Model\Entity\Attribute\AbstractAttribute[]

Definition at line 304 of file AbstractType.php.

◆ getForceChildItemQtyChanges()

getForceChildItemQtyChanges (   $product)

Allow for updates of children qty's (applicable for complicated product types. As default returns false)

Parameters
\Magento\Catalog\Model\Product$product
Returns
boolean false @SuppressWarnings(PHPMD.UnusedFormalParameter) @SuppressWarnings(PHPMD.BooleanGetMethodName)

Definition at line 923 of file AbstractType.php.

924  {
925  return false;
926  }

◆ getIdentities()

getIdentities ( \Magento\Catalog\Model\Product  $product)

Return array of specific to type product entities

Parameters
\Magento\Catalog\Model\Product$product
Returns
array @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 1089 of file AbstractType.php.

1090  {
1091  return [];
1092  }

◆ getOptionSku()

getOptionSku (   $product,
  $sku = '' 
)

Default action to get sku of product with option

Parameters
\Magento\Catalog\Model\Product$productProduct with Custom Options
string$skuProduct SKU without option
Returns
string

Definition at line 802 of file AbstractType.php.

803  {
804  $skuDelimiter = '-';
805  if (empty($sku)) {
806  $sku = $product->getData('sku');
807  }
808  $optionIds = $product->getCustomOption('option_ids');
809  if ($optionIds) {
810  foreach (explode(',', $optionIds->getValue()) as $optionId) {
811  $option = $product->getOptionById($optionId);
812  if ($option) {
813  $confItemOption = $product->getCustomOption(self::OPTION_PREFIX . $optionId);
814 
815  $group = $option->groupFactory($option->getType())
816  ->setOption($option)
817  ->setListener(new \Magento\Framework\DataObject());
818 
819  $optionSku = $group->getOptionSku($confItemOption->getValue(), $skuDelimiter);
820  if ($optionSku) {
821  $sku .= $skuDelimiter . $optionSku;
822  }
823 
824  if ($group->getListener()->getHasError()) {
825  $product->setHasError(true)->setMessage($group->getListener()->getMessage());
826  }
827  }
828  }
829  }
830  return $sku;
831  }
$group
Definition: sections.phtml:16

◆ getOrderOptions()

getOrderOptions (   $product)

Prepare additional options/information for order item which will be created from this product

Parameters
\Magento\Catalog\Model\Product$product
Returns
array

Definition at line 652 of file AbstractType.php.

653  {
654  $optionArr = [];
655  $info = $product->getCustomOption('info_buyRequest');
656  if ($info) {
657  $optionArr['info_buyRequest'] = $this->serializer->unserialize($info->getValue());
658  }
659 
660  $optionIds = $product->getCustomOption('option_ids');
661  if ($optionIds) {
662  foreach (explode(',', $optionIds->getValue()) as $optionId) {
663  $option = $product->getOptionById($optionId);
664  if ($option) {
665  $confItemOption = $product->getCustomOption(self::OPTION_PREFIX . $option->getId());
666 
667  $group = $option->groupFactory($option->getType())
668  ->setOption($option)
669  ->setProduct($product)
670  ->setConfigurationItemOption($confItemOption);
671 
672  $optionArr['options'][] = [
673  'label' => $option->getTitle(),
674  'value' => $group->getFormattedOptionValue($confItemOption->getValue()),
675  'print_value' => $group->getPrintableOptionValue($confItemOption->getValue()),
676  'option_id' => $option->getId(),
677  'option_type' => $option->getType(),
678  'option_value' => $confItemOption->getValue(),
679  'custom_view' => $group->isCustomizedView(),
680  ];
681  }
682  }
683  }
684 
685  $productTypeConfig = $product->getCustomOption('product_type');
686  if ($productTypeConfig) {
687  $optionArr['super_product_config'] = [
688  'product_code' => $productTypeConfig->getCode(),
689  'product_type' => $productTypeConfig->getValue(),
690  'product_id' => $productTypeConfig->getProductId(),
691  ];
692  }
693 
694  return $optionArr;
695  }
$group
Definition: sections.phtml:16
foreach( $_productCollection as $_product)() ?>" class $info
Definition: listing.phtml:52

◆ getParentIdsByChild()

getParentIdsByChild (   $childId)

Retrieve parent ids array by required child

Parameters
int | array$childId
Returns
array @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 261 of file AbstractType.php.

262  {
263  return [];
264  }

◆ getProductsToPurchaseByReqGroups()

getProductsToPurchaseByReqGroups (   $product)

Retrieve products divided into groups required to purchase At least one product in each group has to be purchased

Parameters
\Magento\Catalog\Model\Product$product
Returns
array

Definition at line 1007 of file AbstractType.php.

1008  {
1009  if ($this->isComposite($product)) {
1010  return [];
1011  }
1012  return [[$product]];
1013  }

◆ getRelationInfo()

getRelationInfo ( )

Return relation info about used products for specific type instance

Returns
\Magento\Framework\DataObject Object with information data

Definition at line 231 of file AbstractType.php.

232  {
233  return new \Magento\Framework\DataObject();
234  }

◆ getSearchableData()

getSearchableData (   $product)

Retrieve additional searchable data from type instance Using based on product id and store_id data

Parameters
\Magento\Catalog\Model\Product$product
Returns
array

Definition at line 987 of file AbstractType.php.

988  {
989  $searchData = [];
990  if ($product->getHasOptions()) {
991  $searchData = $this->_catalogProductOption->getSearchableData(
992  $product->getEntityId(),
993  $product->getStoreId()
994  );
995  }
996 
997  return $searchData;
998  }

◆ getSetAttributes()

getSetAttributes (   $product)

Get array of product set attributes

Parameters
\Magento\Catalog\Model\Product$product
Returns
\Magento\Eav\Model\Entity\Attribute\AbstractAttribute[]

Definition at line 272 of file AbstractType.php.

273  {
274  if (!$product->hasData($this->_cacheProductSetAttributes)) {
275  $setAttributes = $product->getResource()
276  ->loadAllAttributes($product)
277  ->getSortedAttributes($product->getAttributeSetId());
278  $product->setData($this->_cacheProductSetAttributes, $setAttributes);
279  }
280  return $product->getData($this->_cacheProductSetAttributes);
281  }

◆ getSku()

getSku (   $product)

Default action to get sku of product

Parameters
\Magento\Catalog\Model\Product$product
Returns
string

Definition at line 786 of file AbstractType.php.

787  {
788  $sku = $product->getData('sku');
789  if ($product->getCustomOption('option_ids')) {
790  $sku = $this->getOptionSku($product, $sku);
791  }
792  return $sku;
793  }

◆ getSpecifyOptionMessage()

getSpecifyOptionMessage ( )

Retrieve message for specify option(s)

Returns
\Magento\Framework\Phrase

Definition at line 562 of file AbstractType.php.

563  {
564  return __("The product's required option(s) weren't entered. Make sure the options are entered and try again.");
565  }
__()
Definition: __.php:13

◆ getStoreFilter()

getStoreFilter (   $product)

Retrieve store filter for associated products

Parameters
\Magento\Catalog\Model\Product$product
Returns
int|\Magento\Store\Model\Store

Definition at line 894 of file AbstractType.php.

895  {
896  $cacheKey = '_cache_instance_store_filter';
897  return $product->getData($cacheKey);
898  }

◆ getWeight()

getWeight (   $product)

Default action to get weight of product

Parameters
\Magento\Catalog\Model\Product$product
Returns
float

Definition at line 839 of file AbstractType.php.

840  {
841  return $product->getData('weight');
842  }

◆ hasOptions()

hasOptions (   $product)

Return true if product has options

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool

Definition at line 850 of file AbstractType.php.

851  {
852  return $product->getHasOptions();
853  }

◆ hasRequiredOptions()

hasRequiredOptions (   $product)

Check if product has required options

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool

Definition at line 880 of file AbstractType.php.

881  {
882  if ($product->getRequiredOptions()) {
883  return true;
884  }
885  return false;
886  }

◆ hasWeight()

hasWeight ( )

Determine presence of weight for product type

Returns
bool

Definition at line 1065 of file AbstractType.php.

1066  {
1067  return true;
1068  }

◆ isComposite()

isComposite (   $product)

Check if product is composite

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 753 of file AbstractType.php.

◆ isPossibleBuyFromList()

isPossibleBuyFromList (   $product)

Check if product can be potentially buyed from the category page or some other list

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool
Since
101.0.11

Definition at line 1111 of file AbstractType.php.

◆ isSalable()

isSalable (   $product)

Check is product available for sale

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool

Definition at line 346 of file AbstractType.php.

347  {
348  $salable = $product->getStatus() == \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED;
349  if ($salable && $product->hasData('is_salable')) {
350  $salable = $product->getData('is_salable');
351  }
352 
353  return (bool)(int)$salable;
354  }

◆ isVirtual()

isVirtual (   $product)

Check is virtual product

Parameters
\Magento\Catalog\Model\Product$product
Returns
bool @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 335 of file AbstractType.php.

336  {
337  return false;
338  }

◆ prepareForCart()

prepareForCart ( \Magento\Framework\DataObject  $buyRequest,
  $product 
)

Initialize product(s) for add to cart process

Parameters
\Magento\Framework\DataObject$buyRequest
\Magento\Catalog\Model\Product$product
Returns
array|string

Definition at line 467 of file AbstractType.php.

468  {
469  return $this->prepareForCartAdvanced($buyRequest, $product, self::PROCESS_MODE_FULL);
470  }
foreach($product->getExtensionAttributes() ->getBundleProductOptions() as $option) $buyRequest
prepareForCartAdvanced(\Magento\Framework\DataObject $buyRequest, $product, $processMode=null)

◆ prepareForCartAdvanced()

prepareForCartAdvanced ( \Magento\Framework\DataObject  $buyRequest,
  $product,
  $processMode = null 
)

Initialize product(s) for add to cart process. Advanced version of func to prepare product for cart - processMode can be specified there.

Parameters
\Magento\Framework\DataObject$buyRequest
\Magento\Catalog\Model\Product$product
null | string$processMode
Returns
array|string

Definition at line 450 of file AbstractType.php.

451  {
452  if (!$processMode) {
453  $processMode = self::PROCESS_MODE_FULL;
454  }
455  $_products = $this->_prepareProduct($buyRequest, $product, $processMode);
456  $this->processFileQueue();
457  return $_products;
458  }
foreach($product->getExtensionAttributes() ->getBundleProductOptions() as $option) $buyRequest

◆ prepareQuoteItemQty()

prepareQuoteItemQty (   $qty,
  $product 
)

Prepare Quote Item Quantity

Parameters
int | float$qty
\Magento\Catalog\Model\Product$product
Returns
float @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 936 of file AbstractType.php.

937  {
938  return (float)$qty;
939  }

◆ processBuyRequest()

processBuyRequest (   $product,
  $buyRequest 
)

Prepare selected options for product

Parameters
\Magento\Catalog\Model\Product$product
\Magento\Framework\DataObject$buyRequest
Returns
array @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 1023 of file AbstractType.php.

1024  {
1025  return [];
1026  }

◆ processConfiguration()

processConfiguration ( \Magento\Framework\DataObject  $buyRequest,
  $product,
  $processMode = self::PROCESS_MODE_LITE 
)

Process product configuration

Parameters
\Magento\Framework\DataObject$buyRequest
\Magento\Catalog\Model\Product$product
string$processMode
Returns
array|string

Definition at line 431 of file AbstractType.php.

435  {
436  $products = $this->_prepareProduct($buyRequest, $product, $processMode);
437  $this->processFileQueue();
438  return $products;
439  }
foreach($product->getExtensionAttributes() ->getBundleProductOptions() as $option) $buyRequest

◆ save()

save (   $product)

Save type related data

Parameters
\Magento\Catalog\Model\Product$product
Returns
$this

Definition at line 703 of file AbstractType.php.

704  {
705  if ($product->dataHasChangedFor('type_id') && $product->getOrigData('type_id')) {
706  $oldTypeProduct = clone $product;
707  $oldTypeInstance = $this->_catalogProductType->factory(
708  $oldTypeProduct->setTypeId($product->getOrigData('type_id'))
709  );
710  $oldTypeProduct->setTypeInstance($oldTypeInstance);
711  $oldTypeInstance->deleteTypeSpecificData($oldTypeProduct);
712  }
713  return $this;
714  }

◆ setConfig()

setConfig (   $config)

Setting specified product type variables

Parameters
array$config
Returns
$this

Definition at line 967 of file AbstractType.php.

968  {
969  if (isset($config['composite'])) {
970  $this->_isComposite = (bool)$config['composite'];
971  }
972 
973  if (isset($config['can_use_qty_decimals'])) {
974  $this->_canUseQtyDecimals = (bool)$config['can_use_qty_decimals'];
975  }
976 
977  return $this;
978  }
$config
Definition: fraud_order.php:17

◆ setImageFromChildProduct()

setImageFromChildProduct ( \Magento\Catalog\Model\Product  $product)

Set image for product without image if possible

Parameters
\Magento\Catalog\Model\Product$product
Returns
$this @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 1077 of file AbstractType.php.

1078  {
1079  return $this;
1080  }

◆ setStoreFilter()

setStoreFilter (   $store,
  $product 
)

Set store filter for associated products

Parameters
$storeint|\Magento\Store\Model\Store
\Magento\Catalog\Model\Product$product
Returns
$this

Definition at line 907 of file AbstractType.php.

908  {
909  $cacheKey = '_cache_instance_store_filter';
910  $product->setData($cacheKey, $store);
911  return $this;
912  }

◆ setTypeId()

setTypeId (   $typeId)

Specify type identifier

Parameters
string$typeId
Returns
\Magento\Catalog\Model\Product\Type\AbstractType

Definition at line 220 of file AbstractType.php.

221  {
222  $this->_typeId = $typeId;
223  return $this;
224  }

◆ updateQtyOption()

updateQtyOption (   $options,
\Magento\Framework\DataObject  $option,
  $value,
  $product 
)

Method is needed for specific actions to change given configuration options values according current product type logic Example: the cataloginventory validation of decimal qty can change qty to int, so need to change configuration item qty option value too.

Parameters
array$options
\Magento\Framework\DataObject$option
int | float | null$value
\Magento\Catalog\Model\Product$product
Returns
$this @SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 869 of file AbstractType.php.

870  {
871  return $this;
872  }

Field Documentation

◆ $_cacheProductSetAttributes

$_cacheProductSetAttributes = '_cache_instance_product_set_attributes'
protected

Definition at line 111 of file AbstractType.php.

◆ $_canConfigure

$_canConfigure = false
protected

Definition at line 48 of file AbstractType.php.

◆ $_canUseQtyDecimals

$_canUseQtyDecimals = true
protected

Definition at line 55 of file AbstractType.php.

◆ $_catalogProductOption

$_catalogProductOption
protected

Definition at line 159 of file AbstractType.php.

◆ $_catalogProductType

$_catalogProductType
protected

Definition at line 145 of file AbstractType.php.

◆ $_coreRegistry

$_coreRegistry
protected

Definition at line 126 of file AbstractType.php.

◆ $_eavConfig

$_eavConfig
protected

Definition at line 152 of file AbstractType.php.

◆ $_editableAttributes

$_editableAttributes
protected

Definition at line 34 of file AbstractType.php.

◆ $_eventManager

$_eventManager
protected

Definition at line 133 of file AbstractType.php.

◆ $_fileQueue

$_fileQueue = []
protected

Definition at line 62 of file AbstractType.php.

◆ $_fileStorageDb

$_fileStorageDb
protected

Definition at line 104 of file AbstractType.php.

◆ $_filesystem

$_filesystem
protected

Definition at line 99 of file AbstractType.php.

◆ $_isComposite

$_isComposite = false
protected

Definition at line 41 of file AbstractType.php.

◆ $_logger

$_logger
protected

Definition at line 138 of file AbstractType.php.

◆ $_typeId

$_typeId
protected

Definition at line 29 of file AbstractType.php.

◆ $productRepository

$productRepository
protected

Definition at line 164 of file AbstractType.php.

◆ $serializer

$serializer
protected

Definition at line 172 of file AbstractType.php.

◆ CALCULATE_CHILD

const CALCULATE_CHILD = 0

Definition at line 64 of file AbstractType.php.

◆ CALCULATE_PARENT

const CALCULATE_PARENT = 1

Definition at line 66 of file AbstractType.php.

◆ OPTION_PREFIX

const OPTION_PREFIX = 'option_'

Item options prefix

Definition at line 94 of file AbstractType.php.

◆ PROCESS_MODE_FULL

const PROCESS_MODE_FULL = 'full'

#- Process modes

Full validation - all required options must be set, whole configuration must be valid

Definition at line 82 of file AbstractType.php.

◆ PROCESS_MODE_LITE

const PROCESS_MODE_LITE = 'lite'

Process modes

Lite validation - only received options are validated

Definition at line 89 of file AbstractType.php.

◆ SHIPMENT_SEPARATELY

const SHIPMENT_SEPARATELY = 1

#+ values for shipment type (invoice etc)

Definition at line 71 of file AbstractType.php.

◆ SHIPMENT_TOGETHER

const SHIPMENT_TOGETHER = 0

Definition at line 73 of file AbstractType.php.


The documentation for this class was generated from the following file: