Skip to content

Commit dd4c577

Browse files
antograssiotsoyuka
authored andcommitted
Allow changing the location of Swagger UI
1 parent b47ccea commit dd4c577

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,13 +320,15 @@ private function registerSwaggerConfiguration(ContainerBuilder $container, array
320320

321321
$loader->load('json_schema.xml');
322322
$loader->load('swagger.xml');
323+
$loader->load('swagger-ui.xml');
323324

324-
if ($config['enable_swagger_ui'] || $config['enable_re_doc']) {
325-
$loader->load('swagger-ui.xml');
326-
$container->setParameter('api_platform.enable_swagger_ui', $config['enable_swagger_ui']);
327-
$container->setParameter('api_platform.enable_re_doc', $config['enable_re_doc']);
325+
if (!$config['enable_swagger_ui'] && !$config['enable_re_doc']) {
326+
// Remove the listener but keep the controller to allow customizing the path of the UI
327+
$container->removeDefinition('api_platform.swagger.listener.ui');
328328
}
329329

330+
$container->setParameter('api_platform.enable_swagger_ui', $config['enable_swagger_ui']);
331+
$container->setParameter('api_platform.enable_re_doc', $config['enable_re_doc']);
330332
$container->setParameter('api_platform.swagger.api_keys', $config['swagger']['api_keys']);
331333
}
332334

src/Bridge/Symfony/Bundle/Resources/views/SwaggerUi/index.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
{% if (reDocEnabled and not swaggerUiEnabled) or (reDocEnabled and 're_doc' == active_ui) %}
8484
<script src="{{ asset('bundles/apiplatform/redoc/redoc.standalone.js') }}"></script>
8585
<script src="{{ asset('bundles/apiplatform/init-redoc-ui.js') }}"></script>
86-
{% elseif (swaggerUiEnabled) %}
86+
{% else %}
8787
<script src="{{ asset('bundles/apiplatform/swagger-ui/swagger-ui-bundle.js') }}"></script>
8888
<script src="{{ asset('bundles/apiplatform/swagger-ui/swagger-ui-standalone-preset.js') }}"></script>
8989
<script src="{{ asset('bundles/apiplatform/init-swagger-ui.js') }}"></script>

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -518,13 +518,11 @@ public function testDisabledDocsRemovesAddLinkHeaderService()
518518
public function testDisabledSwaggerUIAndRedoc()
519519
{
520520
$containerBuilderProphecy = $this->getBaseContainerBuilderProphecy();
521-
$containerBuilderProphecy->setDefinition('api_platform.swagger.action.ui', Argument::type(Definition::class))->shouldNotBeCalled();
522-
$containerBuilderProphecy->setDefinition('api_platform.swagger.listener.ui', Argument::type(Definition::class))->shouldNotBeCalled();
523-
$containerBuilderProphecy->setParameter('api_platform.enable_swagger_ui', true)->shouldNotBeCalled();
521+
$containerBuilderProphecy->removeDefinition('api_platform.swagger.listener.ui')->shouldBeCalledTimes(1);
524522
$containerBuilderProphecy->setParameter('api_platform.enable_swagger_ui', true)->shouldNotBeCalled();
525-
$containerBuilderProphecy->setParameter('api_platform.enable_swagger_ui', false)->shouldNotBeCalled();
523+
$containerBuilderProphecy->setParameter('api_platform.enable_swagger_ui', false)->shouldBeCalledTimes(1);
526524
$containerBuilderProphecy->setParameter('api_platform.enable_re_doc', true)->shouldNotBeCalled();
527-
$containerBuilderProphecy->setParameter('api_platform.enable_re_doc', false)->shouldNotBeCalled();
525+
$containerBuilderProphecy->setParameter('api_platform.enable_re_doc', false)->shouldBeCalledTimes(1);
528526
$containerBuilder = $containerBuilderProphecy->reveal();
529527

530528
$config = self::DEFAULT_CONFIG;

0 commit comments

Comments
 (0)