@@ -48,14 +48,40 @@ public function supportsNormalization($data, $format = null, array $context = []
48
48
*/
49
49
public function normalize ($ object , $ format = null , array $ context = [])
50
50
{
51
- if ($ this ->handleNonResource || null !== $ outputClass = $ this ->getOutputClass ($ this ->getObjectClass ($ object ), $ context )) {
51
+ if (! $ this ->handleNonResource && null !== $ outputClass = $ this ->getOutputClass ($ this ->getObjectClass ($ object ), $ context )) {
52
52
return parent ::normalize ($ object , $ format , $ context );
53
53
}
54
54
55
55
if (!isset ($ context ['cache_key ' ])) {
56
56
$ context ['cache_key ' ] = $ this ->getHalCacheKey ($ format , $ context );
57
57
}
58
58
59
+ if ($ this ->handleNonResource ) {
60
+ if (isset ($ context ['api_resource ' ])) {
61
+ $ originalResource = $ context ['api_resource ' ];
62
+ unset($ context ['api_resource ' ]);
63
+ }
64
+
65
+ $ rawData = parent ::normalize ($ object , $ format , $ context );
66
+ if (!\is_array ($ rawData )) {
67
+ return $ rawData ;
68
+ }
69
+
70
+ if (!isset ($ originalResource )) {
71
+ return $ rawData ;
72
+ }
73
+
74
+ $ metadataData = [
75
+ '_links ' => [
76
+ 'self ' => [
77
+ 'href ' => $ this ->iriConverter ->getIriFromItem ($ originalResource ),
78
+ ],
79
+ ],
80
+ ];
81
+
82
+ return $ metadataData + $ rawData ;
83
+ }
84
+
59
85
$ resourceClass = $ this ->resourceClassResolver ->getResourceClass ($ object , $ context ['resource_class ' ] ?? null , true );
60
86
$ context = $ this ->initContext ($ resourceClass , $ context );
61
87
$ context ['iri ' ] = $ this ->iriConverter ->getIriFromItem ($ object );
@@ -66,12 +92,18 @@ public function normalize($object, $format = null, array $context = [])
66
92
return $ rawData ;
67
93
}
68
94
69
- $ data = ['_links ' => ['self ' => ['href ' => $ context ['iri ' ]]]];
95
+ $ metadataData = [
96
+ '_links ' => [
97
+ 'self ' => [
98
+ 'href ' => $ context ['iri ' ],
99
+ ],
100
+ ],
101
+ ];
70
102
$ components = $ this ->getComponents ($ object , $ format , $ context );
71
- $ data = $ this ->populateRelation ($ data , $ object , $ format , $ context , $ components , 'links ' );
72
- $ data = $ this ->populateRelation ($ data , $ object , $ format , $ context , $ components , 'embedded ' );
103
+ $ metadataData = $ this ->populateRelation ($ metadataData , $ object , $ format , $ context , $ components , 'links ' );
104
+ $ metadataData = $ this ->populateRelation ($ metadataData , $ object , $ format , $ context , $ components , 'embedded ' );
73
105
74
- return $ data + $ rawData ;
106
+ return $ metadataData + $ rawData ;
75
107
}
76
108
77
109
/**
0 commit comments