/** * @inheritdoc */ public function getChildren($productId) { $product = $this->productRepository->get($productId); if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) { throw new Exception('Only implemented for bundle product', Exception::HTTP_FORBIDDEN); } $childrenList = []; foreach ($this->getOptions($product) as $option) { /** @var \Magento\Catalog\Model\Product $selection */ foreach ($option->getSelections() as $selection) { $childrenList[] = $this->linkConverter->createDataFromModel($selection, $product); } } return $childrenList; }
/** * @param Product $product * @param int $optionId * @return array|null */ private function getProductLinks(Product $product, $optionId) { /** @var \Magento\Bundle\Model\Product\Type $productTypeInstance */ $productTypeInstance = $product->getTypeInstance(); $productTypeInstance->setStoreFilter($product->getStoreId(), $product); $selectionCollection = $productTypeInstance->getSelectionsCollection([$optionId], $product); $productLinks = []; /** @var \Magento\Catalog\Model\Product $selection */ foreach ($selectionCollection as $selection) { $productLinks[] = $this->linkConverter->createDataFromModel($selection, $product); } return $productLinks; }