Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e15bd3b

Browse files
fix(metadata): generated NotExposed operation should inherit resource options
1 parent e274585 commit e15bd3b

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

src/Metadata/Resource/Factory/NotExposedOperationResourceMetadataCollectionFactory.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
*/
2929
final class NotExposedOperationResourceMetadataCollectionFactory implements ResourceMetadataCollectionFactoryInterface
3030
{
31+
use OperationDefaultsTrait;
32+
3133
public static $skolemUriTemplate = '/.well-known/genid/{id}';
3234

3335
private $linkFactory;
@@ -69,13 +71,13 @@ public function create(string $resourceClass): ResourceMetadataCollection
6971
// No item operation has been found on all resources for resource class: generate one on the last resource
7072
// Helpful to generate an IRI for a resource without declaring the Get operation
7173
/** @var HttpOperation $operation */
72-
$operation = (new NotExposed())->withClass($resource->getClass())->withShortName($resource->getShortName()); // @phpstan-ignore-line $resource is defined if count > 0
74+
[$key, $operation] = $this->getOperationWithDefaults($resource, new NotExposed(), true); // @phpstan-ignore-line $resource is defined if count > 0
7375

7476
if (!$this->linkFactory->createLinksFromIdentifiers($operation)) {
7577
$operation = $operation->withUriTemplate(self::$skolemUriTemplate);
7678
}
7779

78-
$operations->add(sprintf('_api_%s_get', $operation->getShortName()), $operation)->sort(); // @phpstan-ignore-line $operation exists
80+
$operations->add($key, $operation)->sort(); // @phpstan-ignore-line $operation exists
7981

8082
return $resourceMetadataCollection;
8183
}

src/Metadata/Tests/Resource/Factory/NotExposedOperationResourceMetadataCollectionFactoryTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class: AttributeResource::class
182182
shortName: 'AttributeResource',
183183
operations: [
184184
'_api_AttributeResource_get_collection' => new GetCollection(controller: 'api_platform.action.placeholder', shortName: 'AttributeResource', class: AttributeResource::class),
185-
'_api_AttributeResource_get' => new NotExposed(controller: 'api_platform.action.not_exposed', shortName: 'AttributeResource', class: AttributeResource::class, output: false, read: false),
185+
'_api_AttributeResource_get' => new NotExposed(controller: 'api_platform.action.not_exposed', shortName: 'AttributeResource', class: AttributeResource::class, output: false, read: false, extraProperties: ['generated_operation' => true]),
186186
],
187187
class: AttributeResource::class
188188
),
@@ -206,6 +206,7 @@ class: AttributeResource::class
206206
),
207207
new ApiResource(
208208
shortName: 'AttributeResource',
209+
types: ['https://schema.org/Book'],
209210
operations: [
210211
'_api_AttributeResource_get_collection' => new GetCollection(controller: 'api_platform.action.placeholder', shortName: 'AttributeResource', class: AttributeResource::class),
211212
],
@@ -224,9 +225,10 @@ class: AttributeResource::class
224225
),
225226
new ApiResource(
226227
shortName: 'AttributeResource',
228+
types: ['https://schema.org/Book'],
227229
operations: [
228230
'_api_AttributeResource_get_collection' => new GetCollection(controller: 'api_platform.action.placeholder', shortName: 'AttributeResource', class: AttributeResource::class),
229-
'_api_AttributeResource_get' => new NotExposed(uriTemplate: '/.well-known/genid/{id}', controller: 'api_platform.action.not_exposed', shortName: 'AttributeResource', class: AttributeResource::class, output: false, read: false),
231+
'_api_AttributeResource_get' => new NotExposed(uriTemplate: '/.well-known/genid/{id}', controller: 'api_platform.action.not_exposed', shortName: 'AttributeResource', class: AttributeResource::class, output: false, read: false, extraProperties: ['generated_operation' => true], types: ['https://schema.org/Book']),
230232
],
231233
class: AttributeResource::class
232234
),

0 commit comments

Comments
 (0)