From bbd9bdba2c79b651c794f2e049b7369b30f76ec1 Mon Sep 17 00:00:00 2001 From: Vinarnt Date: Mon, 10 Nov 2025 16:44:38 +0100 Subject: [PATCH] fix(symfony): inject api-platform default configuration in the php resource metadata factory --- .../Factory/PhpFileResourceMetadataCollectionFactory.php | 8 ++++++++ src/Symfony/Bundle/Resources/config/metadata/resource.php | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Metadata/Resource/Factory/PhpFileResourceMetadataCollectionFactory.php b/src/Metadata/Resource/Factory/PhpFileResourceMetadataCollectionFactory.php index e02f7b31e3e..1a48574063e 100644 --- a/src/Metadata/Resource/Factory/PhpFileResourceMetadataCollectionFactory.php +++ b/src/Metadata/Resource/Factory/PhpFileResourceMetadataCollectionFactory.php @@ -17,6 +17,9 @@ use ApiPlatform\Metadata\Operation; use ApiPlatform\Metadata\Operations; use ApiPlatform\Metadata\Resource\ResourceMetadataCollection; +use ApiPlatform\Metadata\Util\CamelCaseToSnakeCaseNameConverter; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; final class PhpFileResourceMetadataCollectionFactory implements ResourceMetadataCollectionFactoryInterface { @@ -25,7 +28,12 @@ final class PhpFileResourceMetadataCollectionFactory implements ResourceMetadata public function __construct( private readonly ResourceExtractorInterface $metadataExtractor, private readonly ?ResourceMetadataCollectionFactoryInterface $decorated = null, + ?LoggerInterface $logger = null, + array $defaults = [], ) { + $this->logger = $logger ?? new NullLogger(); + $this->defaults = $defaults; + $this->camelCaseToSnakeCaseNameConverter = new CamelCaseToSnakeCaseNameConverter(); } /** diff --git a/src/Symfony/Bundle/Resources/config/metadata/resource.php b/src/Symfony/Bundle/Resources/config/metadata/resource.php index 60ddc6336a6..ab7f1aa1cf1 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/resource.php +++ b/src/Symfony/Bundle/Resources/config/metadata/resource.php @@ -43,7 +43,8 @@ ->args([ service('api_platform.metadata.resource_extractor.php_file'), service('api_platform.metadata.resource.metadata_collection_factory.php_file.inner'), - service('service_container')->nullOnInvalid(), + service('logger')->nullOnInvalid(), + '%api_platform.defaults%', ]); $services->set('api_platform.metadata.resource.metadata_collection_factory.mutator', 'ApiPlatform\Metadata\Resource\Factory\MutatorResourceMetadataCollectionFactory')