|
7 | 7 |
|
8 | 8 | namespace Magento\CatalogGraphQl\Model\Resolver\Category;
|
9 | 9 |
|
| 10 | +use \Magento\CatalogGraphQl\Model\Resolver\Category\DataProvider\Breadcrumbs as BreadcrumbsDataProvider; |
10 | 11 | use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
|
11 | 12 | use Magento\Framework\GraphQl\Config\Element\Field;
|
12 | 13 | use Magento\Framework\GraphQl\Query\ResolverInterface;
|
13 | 14 | use Magento\Framework\GraphQl\Query\Resolver\Value;
|
14 | 15 | use Magento\Framework\GraphQl\Query\Resolver\ValueFactory;
|
15 |
| -use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory; |
16 | 16 |
|
17 | 17 | /**
|
18 | 18 | * Retrieves breadcrumbs
|
19 | 19 | */
|
20 | 20 | class Breadcrumbs implements ResolverInterface
|
21 | 21 | {
|
22 | 22 | /**
|
23 |
| - * @var CollectionFactory |
| 23 | + * @var BreadcrumbsDataProvider |
24 | 24 | */
|
25 |
| - private $collectionFactory; |
| 25 | + private $breadcrumbsDataProvider; |
26 | 26 |
|
27 | 27 | /**
|
28 | 28 | * @var ValueFactory
|
29 | 29 | */
|
30 | 30 | private $valueFactory;
|
31 | 31 |
|
32 | 32 | /**
|
| 33 | + * @param BreadcrumbsDataProvider $breadcrumbsDataProvider |
33 | 34 | * @param ValueFactory $valueFactory
|
34 |
| - * @param CollectionFactory $collectionFactory |
35 | 35 | */
|
36 | 36 | public function __construct(
|
37 |
| - ValueFactory $valueFactory, |
38 |
| - CollectionFactory $collectionFactory |
| 37 | + BreadcrumbsDataProvider $breadcrumbsDataProvider, |
| 38 | + ValueFactory $valueFactory |
39 | 39 | ) {
|
40 |
| - $this->collectionFactory = $collectionFactory; |
| 40 | + $this->breadcrumbsDataProvider = $breadcrumbsDataProvider; |
41 | 41 | $this->valueFactory = $valueFactory;
|
42 | 42 | }
|
43 | 43 |
|
44 | 44 | /**
|
45 |
| - * {@inheritdoc} |
| 45 | + * @inheritdoc |
46 | 46 | */
|
47 | 47 | public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null): Value
|
48 | 48 | {
|
49 |
| - $breadcrumbs = []; |
50 |
| - |
51 | 49 | if (!isset($value['path'])) {
|
52 | 50 | $result = function () {
|
53 | 51 | return null;
|
54 | 52 | };
|
55 | 53 | return $this->valueFactory->create($result);
|
56 | 54 | }
|
57 | 55 |
|
58 |
| - $categoryPath = $value['path']; |
59 |
| - $pathCategoryIds = explode('/', $categoryPath); |
60 |
| - $parentCategoryIds = array_slice($pathCategoryIds, 2, count($pathCategoryIds) - 3); |
61 |
| - |
62 |
| - if (count($parentCategoryIds)) { |
63 |
| - $collection = $this->collectionFactory->create(); |
64 |
| - $collection->addAttributeToSelect(['name', 'url_key']); |
65 |
| - $collection->addAttributeToFilter('entity_id', $parentCategoryIds); |
66 |
| - |
67 |
| - foreach ($collection as $category) { |
68 |
| - $breadcrumbs[] = [ |
69 |
| - 'category_id' => $category->getId(), |
70 |
| - 'category_name' => $category->getName(), |
71 |
| - 'category_level' => $category->getLevel(), |
72 |
| - 'category_url_key' => $category->getUrlKey(), |
73 |
| - ]; |
74 |
| - } |
75 |
| - } |
76 |
| - |
77 |
| - $result = function () use ($breadcrumbs) { |
78 |
| - return count($breadcrumbs) ? $breadcrumbs : null; |
| 56 | + $result = function () use ($value) { |
| 57 | + $breadcrumbsData = $this->breadcrumbsDataProvider->getData($value['path']); |
| 58 | + return count($breadcrumbsData) ? $breadcrumbsData : null; |
79 | 59 | };
|
80 |
| - |
81 | 60 | return $this->valueFactory->create($result);
|
82 | 61 | }
|
83 | 62 | }
|
0 commit comments