1717use RuntimeException ;
1818use Symfony \Bundle \FrameworkBundle \Routing \Router ;
1919use Exception ;
20+ use Symfony \Component \HttpFoundation \Request ;
2021
2122/**
2223 * Class JsonApiSerializer
@@ -31,6 +32,7 @@ class JsonApiSerializer extends \NilPortugues\Api\JsonApi\JsonApiSerializer
3132 public function __construct (JsonApiTransformer $ transformer , Router $ router )
3233 {
3334 $ this ->mapUrls ($ transformer , $ router );
35+
3436 parent ::__construct ($ transformer );
3537 }
3638
@@ -40,6 +42,9 @@ public function __construct(JsonApiTransformer $transformer, Router $router)
4042 */
4143 private function mapUrls (JsonApiTransformer $ transformer , Router $ router )
4244 {
45+ $ request = Request::createFromGlobals ();
46+ $ baseUrl = $ request ->getSchemeAndHttpHost ();
47+
4348 $ reflectionClass = new ReflectionClass ($ transformer );
4449 $ reflectionProperty = $ reflectionClass ->getProperty ('mappings ' );
4550 $ reflectionProperty ->setAccessible (true );
@@ -48,14 +53,14 @@ private function mapUrls(JsonApiTransformer $transformer, Router $router)
4853 foreach ($ mappings as &$ mapping ) {
4954 $ mappingClass = new ReflectionClass ($ mapping );
5055
51- $ this ->setUrlWithReflection ($ router , $ mapping , $ mappingClass , 'resourceUrlPattern ' );
52- $ this ->setUrlWithReflection ($ router , $ mapping , $ mappingClass , 'selfUrl ' );
56+ $ this ->setUrlWithReflection ($ router , $ mapping , $ mappingClass , 'resourceUrlPattern ' , $ baseUrl );
57+ $ this ->setUrlWithReflection ($ router , $ mapping , $ mappingClass , 'selfUrl ' , $ baseUrl );
5358
5459 $ mappingProperty = $ mappingClass ->getProperty ('otherUrls ' );
5560 $ mappingProperty ->setAccessible (true );
5661 $ otherUrls = $ mappingProperty ->getValue ($ mapping );
5762 foreach ($ otherUrls as &$ url ) {
58- $ url = $ this ->getUrlPattern ($ router , $ url );
63+ $ url = $ this ->getUrlPattern ($ router , $ url, $ baseUrl );
5964 }
6065 $ mappingProperty ->setValue ($ mapping , $ otherUrls );
6166
@@ -64,7 +69,7 @@ private function mapUrls(JsonApiTransformer $transformer, Router $router)
6469 $ relationshipSelfUrl = $ mappingProperty ->getValue ($ mapping );
6570 foreach ($ relationshipSelfUrl as &$ urlMember ) {
6671 foreach ($ urlMember as &$ url ) {
67- $ url = $ this ->getUrlPattern ($ router , $ url );
72+ $ url = $ this ->getUrlPattern ($ router , $ url, $ baseUrl );
6873 }
6974 }
7075 $ mappingProperty ->setValue ($ mapping , $ relationshipSelfUrl );
@@ -79,12 +84,12 @@ private function mapUrls(JsonApiTransformer $transformer, Router $router)
7984 * @param ReflectionClass $mappingClass
8085 * @param string $property
8186 */
82- private function setUrlWithReflection (Router $ router , Mapping $ mapping , ReflectionClass $ mappingClass , $ property )
87+ private function setUrlWithReflection (Router $ router , Mapping $ mapping , ReflectionClass $ mappingClass , $ property, $ baseUrl )
8388 {
8489 $ mappingProperty = $ mappingClass ->getProperty ($ property );
8590 $ mappingProperty ->setAccessible (true );
8691 $ value = $ mappingProperty ->getValue ($ mapping );
87- $ value = $ this ->getUrlPattern ($ router , $ value );
92+ $ value = $ this ->getUrlPattern ($ router , $ value, $ baseUrl );
8893 $ mappingProperty ->setValue ($ mapping , $ value );
8994 }
9095
@@ -96,7 +101,7 @@ private function setUrlWithReflection(Router $router, Mapping $mapping, Reflecti
96101 *
97102 * @throws RuntimeException
98103 */
99- private function getUrlPattern (Router $ router , $ routeNameFromMappingFile )
104+ private function getUrlPattern (Router $ router , $ routeNameFromMappingFile, $ baseUrl )
100105 {
101106 if (!empty ($ routeNameFromMappingFile )) {
102107 try {
@@ -117,7 +122,7 @@ private function getUrlPattern(Router $router, $routeNameFromMappingFile)
117122 $ pattern = \array_combine ($ matches [1 ], $ matches [0 ]);
118123 }
119124
120- return \urldecode ($ router ->generate ($ routeNameFromMappingFile , $ pattern , true ));
125+ return $ baseUrl . \urldecode ($ router ->generate ($ routeNameFromMappingFile , $ pattern , true ));
121126 }
122127
123128 return (string ) $ routeNameFromMappingFile ;
0 commit comments