|
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