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',