diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php
index 83204cc..95405b9 100644
--- a/DependencyInjection/Configuration.php
+++ b/DependencyInjection/Configuration.php
@@ -40,12 +40,6 @@ final class Configuration implements ConfigurationInterface
->thenInvalid('You must not use both `nelmio_api_doc.areas` and `nelmio_api_doc.routes` config options. Please update your config to only use `nelmio_api_doc.areas`.')
->end()
->children()
- ->arrayNode('documentation')
- ->useAttributeAsKey('key')
- ->info('The documentation used as base')
- ->example(['info' => ['title' => 'My App']])
- ->prototype('variable')->end()
- ->end()
->arrayNode('areas')
->info('Filter the routes that are documented')
->defaultValue(['default' => ['path_patterns' => [], 'host_patterns' => []]])
@@ -77,6 +71,12 @@ final class Configuration implements ConfigurationInterface
->example(['^api\.'])
->prototype('scalar')->end()
->end()
+ ->arrayNode('documentation')
+ ->useAttributeAsKey('key')
+ ->info('The documentation used as base')
+ ->example(['info' => ['title' => 'My App']])
+ ->prototype('variable')->end()
+ ->end()
->end()
->end()
->end()
diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php
index 1522712..8f80212 100644
--- a/DependencyInjection/NelmioApiDocExtension.php
+++ b/DependencyInjection/NelmioApiDocExtension.php
@@ -13,6 +13,7 @@ namespace Nelmio\ApiDocBundle\DependencyInjection;
use FOS\RestBundle\Controller\Annotations\ParamInterface;
use Nelmio\ApiDocBundle\ApiDocGenerator;
+use Nelmio\ApiDocBundle\Describer\ExternalDocDescriber;
use Nelmio\ApiDocBundle\Describer\RouteDescriber;
use Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber;
use Nelmio\ApiDocBundle\ModelDescriber\BazingaHateoasModelDescriber;
@@ -103,6 +104,16 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
new Reference('logger'),
])
->addTag(sprintf('nelmio_api_doc.describer.%s', $area), ['priority' => -200]);
+
+ $container->register(sprintf('nelmio_api_doc.describers.config.%s', $area), ExternalDocDescriber::class)
+ ->setPublic(false)
+ ->setArguments([
+ $config['areas'][$area]['documentation'],
+ true,
+ ])
+ ->addTag(sprintf('nelmio_api_doc.describer.%s', $area), ['priority' => 1000]);
+
+ $container->getDefinition(sprintf('nelmio_api_doc.describers.config.%s', $area))->replaceArgument(0, $config['areas'][$area]['documentation']);
}
$container->register('nelmio_api_doc.generator_locator')
@@ -151,9 +162,6 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
]);
}
}
-
- // Import the base configuration
- $container->getDefinition('nelmio_api_doc.describers.config')->replaceArgument(0, $config['documentation']);
}
private function findNameAliases(array $names, string $area): array
diff --git a/Resources/config/services.xml b/Resources/config/services.xml
index 1f4393a..17dcbed 100644
--- a/Resources/config/services.xml
+++ b/Resources/config/services.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/Routing/FilteredRouteCollectionBuilder.php b/Routing/FilteredRouteCollectionBuilder.php
index 0575c21..9c28a7e 100644
--- a/Routing/FilteredRouteCollectionBuilder.php
+++ b/Routing/FilteredRouteCollectionBuilder.php
@@ -26,6 +26,7 @@ final class FilteredRouteCollectionBuilder
->setDefaults([
'path_patterns' => [],
'host_patterns' => [],
+ 'documentation' => [],
])
->setAllowedTypes('path_patterns', 'string[]')
->setAllowedTypes('host_patterns', 'string[]')