File tree Expand file tree Collapse file tree 2 files changed +32
-8
lines changed
app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider Expand file tree Collapse file tree 2 files changed +32
-8
lines changed Original file line number Diff line number Diff line change @@ -100,19 +100,25 @@ public function getId(): int
100
100
101
101
/**
102
102
* Render node and its children as an array recursively.
103
+ * Returns null is node model is not set.
103
104
*
104
- * @return array
105
+ * @return array|null
105
106
*/
106
- public function renderArray (): array
107
+ public function renderArray (): ? array
107
108
{
109
+ if (!$ this ->model ) {
110
+ return null ;
111
+ }
108
112
return array_merge (
109
113
$ this ->forgery ->getHydrator ()->hydrateCategory ($ this ->model ),
110
114
[
111
- 'children ' => array_map (
112
- function ($ node ) {
113
- return $ node ->renderArray ();
114
- },
115
- $ this ->children
115
+ 'children ' => array_filter (
116
+ array_map (
117
+ function ($ node ) {
118
+ return $ node ->renderArray ();
119
+ },
120
+ $ this ->children
121
+ )
116
122
)
117
123
]
118
124
);
Original file line number Diff line number Diff line change 10
10
use Magento \Catalog \Model \Category ;
11
11
use Magento \Catalog \Model \ResourceModel \Category \Collection ;
12
12
use Magento \CatalogGraphQl \Model \Resolver \Products \DataProvider \CategoryTree \Wrapper \Forgery ;
13
+ use Magento \CatalogGraphQl \Model \Resolver \Products \DataProvider \CategoryTree \Wrapper \ForgeryFactory ;
13
14
15
+ /**
16
+ * Data extractor for category tree processing in GraphQL resolvers.
17
+ */
14
18
class ExtractDataFromCategoryTree
15
19
{
20
+ /**
21
+ * @var ForgeryFactory
22
+ */
23
+ private $ resultTreeForgeryFactory ;
24
+
25
+ /**
26
+ * @param ForgeryFactory $resultTreeForgeryFactory
27
+ */
28
+ public function __construct (ForgeryFactory $ resultTreeForgeryFactory )
29
+ {
30
+ $ this ->resultTreeForgeryFactory = $ resultTreeForgeryFactory ;
31
+ }
32
+
16
33
/**
17
34
* Build result tree from collection
18
35
*
@@ -22,7 +39,8 @@ class ExtractDataFromCategoryTree
22
39
*/
23
40
public function buildTree (Collection $ collection , array $ topLevelCategories ) : array
24
41
{
25
- $ forgery = new Forgery ();
42
+ /** @var Forgery $forgery */
43
+ $ forgery = $ this ->resultTreeForgeryFactory ->create ();
26
44
/** @var Category $item */
27
45
foreach ($ collection ->getItems () as $ item ) {
28
46
$ forgery ->forge ($ item );
You can’t perform that action at this time.
0 commit comments