diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php
index 2b868b4..460aadb 100644
--- a/DependencyInjection/NelmioApiDocExtension.php
+++ b/DependencyInjection/NelmioApiDocExtension.php
@@ -155,6 +155,9 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
$bundles = $container->getParameter('kernel.bundles');
if (!isset($bundles['TwigBundle'])) {
$container->removeDefinition('nelmio_api_doc.controller.swagger_ui');
+
+ $container->removeDefinition('nelmio_api_doc.render_docs.html');
+ $container->removeDefinition('nelmio_api_doc.render_docs.html.asset');
}
if (isset($bundles['ApiPlatformBundle']) && class_exists('ApiPlatform\Core\Documentation\Documentation')) {
$loader->load('api_platform.xml');
diff --git a/Render/Html/GetNelmioAsset.php b/Render/Html/GetNelmioAsset.php
index a312899..be64283 100644
--- a/Render/Html/GetNelmioAsset.php
+++ b/Render/Html/GetNelmioAsset.php
@@ -12,17 +12,17 @@
namespace Nelmio\ApiDocBundle\Render\Html;
use Symfony\Bridge\Twig\Extension\AssetExtension;
+use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
/**
* @internal
*/
-class GetNelmioAsset
+class GetNelmioAsset extends AbstractExtension
{
private $assetExtension;
private $resourcesDir;
private $cdnUrl;
- private $assetsMode = AssetsMode::BUNDLE;
public function __construct(AssetExtension $assetExtension)
{
@@ -31,16 +31,16 @@ class GetNelmioAsset
$this->resourcesDir = __DIR__.'/../../Resources/public';
}
- public function toTwigFunction($assetsMode): TwigFunction
+ public function getFunctions()
{
- $this->assetsMode = $assetsMode;
-
- return new TwigFunction('nelmioAsset', $this, ['is_safe' => ['html']]);
+ return [
+ new TwigFunction('nelmioAsset', $this, ['is_safe' => ['html']]),
+ ];
}
- public function __invoke($asset)
+ public function __invoke($defaultAssetsMode, $asset)
{
- [$extension, $mode] = $this->getExtension($asset);
+ [$extension, $mode] = $this->getExtension($defaultAssetsMode, $asset);
[$resource, $isInline] = $this->getResource($asset, $mode);
if ('js' == $extension) {
return $this->renderJavascript($resource, $isInline);
@@ -51,15 +51,15 @@ class GetNelmioAsset
}
}
- private function getExtension($asset)
+ private function getExtension($assetsMode, $asset)
{
$extension = mb_substr($asset, -3, 3, 'utf-8');
if ('.js' === $extension) {
- return ['js', $this->assetsMode];
+ return ['js', $assetsMode];
} elseif ('png' === $extension) {
- return ['png', AssetsMode::OFFLINE == $this->assetsMode ? AssetsMode::CDN : $this->assetsMode];
+ return ['png', AssetsMode::OFFLINE == $assetsMode ? AssetsMode::CDN : $assetsMode];
} else {
- return ['css', $this->assetsMode];
+ return ['css', $assetsMode];
}
}
diff --git a/Render/Html/HtmlOpenApiRenderer.php b/Render/Html/HtmlOpenApiRenderer.php
index 78577f1..39d844c 100644
--- a/Render/Html/HtmlOpenApiRenderer.php
+++ b/Render/Html/HtmlOpenApiRenderer.php
@@ -28,13 +28,12 @@ class HtmlOpenApiRenderer implements OpenApiRenderer
/** @var GetNelmioAsset */
private $getNelmioAsset;
- public function __construct($twig, GetNelmioAsset $getNelmioAsset)
+ public function __construct($twig)
{
if (!$twig instanceof \Twig_Environment && !$twig instanceof Environment) {
throw new InvalidArgumentException(sprintf('Providing an instance of "%s" as twig is not supported.', get_class($twig)));
}
$this->twig = $twig;
- $this->getNelmioAsset = $getNelmioAsset;
}
public function getFormat(): string
@@ -49,8 +48,6 @@ class HtmlOpenApiRenderer implements OpenApiRenderer
'swagger_ui_config' => [],
];
- $this->twig->addFunction($this->getNelmioAsset->toTwigFunction($options['assets_mode']));
-
return $this->twig->render(
'@NelmioApiDoc/SwaggerUi/index.html.twig',
[
diff --git a/Render/RenderOpenApi.php b/Render/RenderOpenApi.php
index 46b1ae1..b561fa6 100644
--- a/Render/RenderOpenApi.php
+++ b/Render/RenderOpenApi.php
@@ -33,6 +33,10 @@ class RenderOpenApi
{
$this->generatorLocator = $generatorLocator;
foreach ($openApiRenderers as $openApiRenderer) {
+ if (null === $openApiRenderer) {
+ continue;
+ }
+
$this->openApiRenderers[$openApiRenderer->getFormat()] = $openApiRenderer;
}
}
diff --git a/Resources/config/services.xml b/Resources/config/services.xml
index 3caaba4..9d2c38c 100644
--- a/Resources/config/services.xml
+++ b/Resources/config/services.xml
@@ -28,16 +28,17 @@