diff --git a/src/Routing/Routes.php b/src/Routing/Routes.php index c337813..2ff3c04 100644 --- a/src/Routing/Routes.php +++ b/src/Routing/Routes.php @@ -126,8 +126,8 @@ class Routes implements ContainerInjectionInterface { ]; // Collection endpoint, like /jsonapi/file/photo. - $route_collection = (new Route($route_base_path, $defaults)) - ->addDefaults(['serialization_class' => JsonApiDocumentTopLevel::class]) + $route_collection = (new Route($route_base_path)) + ->addDefaults($defaults + ['serialization_class' => JsonApiDocumentTopLevel::class]) ->setRequirement('_entity_type', (string) $resource_type->getEntityTypeId()) ->setRequirement('_bundle', (string) $resource_type->getBundle()) ->setRequirement('_jsonapi_custom_query_parameter_names', 'TRUE') @@ -142,8 +142,8 @@ class Routes implements ContainerInjectionInterface { 'type' => 'entity:' . $resource_type->getEntityTypeId(), ], ]); - $route_individual = (new Route(sprintf('%s/{%s}', $route_base_path, $resource_type->getEntityTypeId()), $defaults)) - ->addDefaults(['serialization_class' => JsonApiDocumentTopLevel::class]) + $route_individual = (new Route(sprintf('%s/{%s}', $route_base_path, $resource_type->getEntityTypeId()))) + ->addDefaults($defaults + ['serialization_class' => JsonApiDocumentTopLevel::class]) ->setRequirement('_entity_type', (string) $resource_type->getEntityTypeId()) ->setRequirement('_bundle', (string) $resource_type->getBundle()) ->setRequirement('_jsonapi_custom_query_parameter_names', 'TRUE') @@ -154,7 +154,8 @@ class Routes implements ContainerInjectionInterface { $collection->add($build_route_name('individual'), $route_individual); // Related resource, like /jsonapi/file/photo/123/comments. - $route_related = (new Route(sprintf('%s/{%s}/{related}', $route_base_path, $resource_type->getEntityTypeId()), $defaults)) + $route_related = (new Route(sprintf('%s/{%s}/{related}', $route_base_path, $resource_type->getEntityTypeId()))) + ->addDefaults($defaults) ->setRequirement('_entity_type', (string) $resource_type->getEntityTypeId()) ->setRequirement('_bundle', (string) $resource_type->getBundle()) ->setRequirement('_jsonapi_custom_query_parameter_names', 'TRUE') @@ -165,8 +166,13 @@ class Routes implements ContainerInjectionInterface { $collection->add($build_route_name('related'), $route_related); // Related endpoint, like /jsonapi/file/photo/123/relationships/comments. - $route_relationship = (new Route(sprintf('%s/{%s}/relationships/{related}', $route_base_path, $resource_type->getEntityTypeId()), $defaults + ['_on_relationship' => TRUE])) - ->addDefaults(['serialization_class' => EntityReferenceFieldItemList::class]) + $route_relationship = (new Route(sprintf('%s/{%s}/relationships/{related}', $route_base_path, $resource_type->getEntityTypeId()))) + ->addDefaults( + $defaults + [ + '_on_relationship' => TRUE, + 'serialization_class' => EntityReferenceFieldItemList::class, + ] + ) ->setRequirement('_entity_type', (string) $resource_type->getEntityTypeId()) ->setRequirement('_bundle', (string) $resource_type->getBundle()) ->setRequirement('_jsonapi_custom_query_parameter_names', 'TRUE')