Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OptionList.php
Go to the documentation of this file.
1 <?php
8 
9 class OptionList
10 {
14  protected $optionFactory;
15 
19  protected $type;
20 
24  protected $linkList;
25 
29  protected $dataObjectHelper;
30 
35 
43  public function __construct(
44  \Magento\Bundle\Model\Product\Type $type,
45  \Magento\Bundle\Api\Data\OptionInterfaceFactory $optionFactory,
46  \Magento\Bundle\Model\Product\LinksList $linkList,
47  \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
48  \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
49  ) {
50  $this->type = $type;
51  $this->optionFactory = $optionFactory;
52  $this->linkList = $linkList;
53  $this->dataObjectHelper = $dataObjectHelper;
54  $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
55  }
56 
61  public function getItems(\Magento\Catalog\Api\Data\ProductInterface $product)
62  {
63  $optionCollection = $this->type->getOptionsCollection($product);
64  $this->extensionAttributesJoinProcessor->process($optionCollection);
65  $optionList = [];
67  foreach ($optionCollection as $option) {
68  $productLinks = $this->linkList->getItems($product, $option->getOptionId());
70  $optionDataObject = $this->optionFactory->create();
71  $this->dataObjectHelper->populateWithArray(
72  $optionDataObject,
73  $option->getData(),
74  \Magento\Bundle\Api\Data\OptionInterface::class
75  );
76  $optionDataObject->setOptionId($option->getOptionId())
77  ->setTitle($option->getTitle() === null ? $option->getDefaultTitle() : $option->getTitle())
78  ->setDefaultTitle($option->getDefaultTitle())
79  ->setSku($product->getSku())
80  ->setProductLinks($productLinks);
81  $optionList[] = $optionDataObject;
82  }
83  return $optionList;
84  }
85 }
__construct(\Magento\Bundle\Model\Product\Type $type, \Magento\Bundle\Api\Data\OptionInterfaceFactory $optionFactory, \Magento\Bundle\Model\Product\LinksList $linkList, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor)
Definition: OptionList.php:43
setProductLinks(array $links=null)
Definition: Product.php:1463