diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index 1a351699f3f..c330c90905f 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -375,13 +375,18 @@ private function registerSwaggerConfiguration(ContainerBuilder $container, array { $container->setParameter('api_platform.swagger.versions', $config['swagger']['versions']); - if (empty($config['swagger']['versions'])) { - return; + if (!$config['enable_swagger'] && $config['enable_swagger_ui']) { + throw new RuntimeException('You can not enable the Swagger UI without enabling Swagger, fix this by enabling swagger via the configuration "enable_swagger: true".'); } $loader->load('json_schema.xml'); - $loader->load('swagger.xml'); + + if (!$config['enable_swagger']) { + return; + } + $loader->load('openapi.xml'); + $loader->load('swagger.xml'); $loader->load('swagger-ui.xml'); if (!$config['enable_swagger_ui'] && !$config['enable_re_doc']) { diff --git a/src/Bridge/Symfony/Bundle/Resources/config/api.xml b/src/Bridge/Symfony/Bundle/Resources/config/api.xml index 3590f964d42..cb4bf137755 100644 --- a/src/Bridge/Symfony/Bundle/Resources/config/api.xml +++ b/src/Bridge/Symfony/Bundle/Resources/config/api.xml @@ -242,7 +242,7 @@ %api_platform.version% null %api_platform.swagger.versions% - + diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index c80ee208fa1..96c0fea8597 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -1260,6 +1260,9 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo 'api_platform.http_cache.listener.response.configure', 'api_platform.http_cache.purger.varnish_client', 'api_platform.http_cache.purger.varnish', + 'api_platform.json_schema.json_schema_generate_command', + 'api_platform.json_schema.type_factory', + 'api_platform.json_schema.schema_factory', 'api_platform.listener.view.validate', 'api_platform.listener.view.validate_query_parameters', 'api_platform.mercure.listener.response.add_link_header', @@ -1325,9 +1328,6 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo $definitions[] = 'api_platform.swagger.command.swagger_command'; $definitions[] = 'api_platform.swagger.normalizer.api_gateway'; $definitions[] = 'api_platform.swagger.normalizer.documentation'; - $definitions[] = 'api_platform.json_schema.type_factory'; - $definitions[] = 'api_platform.json_schema.schema_factory'; - $definitions[] = 'api_platform.json_schema.json_schema_generate_command'; $definitions[] = 'api_platform.openapi.options'; $definitions[] = 'api_platform.openapi.normalizer'; $definitions[] = 'api_platform.openapi.normalizer.api_gateway'; @@ -1383,6 +1383,8 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo NumericFilter::class => 'api_platform.doctrine.orm.numeric_filter', ExistsFilter::class => 'api_platform.doctrine.orm.exists_filter', GraphQlSerializerContextBuilderInterface::class => 'api_platform.graphql.serializer.context_builder', + TypeFactoryInterface::class => 'api_platform.json_schema.type_factory', + SchemaFactoryInterface::class => 'api_platform.json_schema.schema_factory', ]; if (\in_array('odm', $doctrineIntegrationsToLoad, true)) { @@ -1403,8 +1405,6 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo // Only when swagger is enabled if ($hasSwagger) { $aliases += [ - TypeFactoryInterface::class => 'api_platform.json_schema.type_factory', - SchemaFactoryInterface::class => 'api_platform.json_schema.schema_factory', Options::class => 'api_platform.openapi.options', OpenApiNormalizer::class => 'api_platform.openapi.normalizer', OpenApiFactoryInterface::class => 'api_platform.openapi.factory',