From a1dd0b54d137d70f2163fa03690c1f4c74a549c0 Mon Sep 17 00:00:00 2001 From: Antoine Bluchet Date: Wed, 28 Aug 2024 15:07:31 +0200 Subject: [PATCH] fix(laravel): entrypoint with doc formats (#6552) --- src/Laravel/ApiPlatformProvider.php | 9 +++++++-- src/Laravel/Tests/JsonApiTest.php | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Laravel/ApiPlatformProvider.php b/src/Laravel/ApiPlatformProvider.php index 40de5b4642..c4195ecf0f 100644 --- a/src/Laravel/ApiPlatformProvider.php +++ b/src/Laravel/ApiPlatformProvider.php @@ -102,6 +102,7 @@ use ApiPlatform\Laravel\Security\ResourceAccessChecker; use ApiPlatform\Laravel\State\AccessCheckerProvider; use ApiPlatform\Laravel\State\SwaggerUiProcessor; +use ApiPlatform\Laravel\State\SwaggerUiProvider; use ApiPlatform\Laravel\State\ValidateProvider; use ApiPlatform\Metadata\Exception\NotExposedHttpException; use ApiPlatform\Metadata\Factory\Property\ClassLevelAttributePropertyNameCollectionFactory; @@ -395,8 +396,12 @@ public function register(): void return new ReadProvider($app->make(CallableProvider::class)); }); + $this->app->singleton(SwaggerUiProvider::class, function (Application $app) { + return new SwaggerUiProvider($app->make(ReadProvider::class), $app->make(OpenApiFactoryInterface::class)); + }); + $this->app->singleton(ValidateProvider::class, function (Application $app) { - return new ValidateProvider($app->make(ReadProvider::class), $app); + return new ValidateProvider($app->make(SwaggerUiProvider::class), $app); }); $this->app->singleton(JsonApiProvider::class, function (Application $app) use ($config) { @@ -587,7 +592,7 @@ public function register(): void }); $this->app->singleton(EntrypointAction::class, function (Application $app) use ($config) { - return new EntrypointAction($app->make(ResourceNameCollectionFactoryInterface::class), $app->make(ProviderInterface::class), $app->make(ProcessorInterface::class), $config->get('api-platform.formats')); + return new EntrypointAction($app->make(ResourceNameCollectionFactoryInterface::class), $app->make(ProviderInterface::class), $app->make(ProcessorInterface::class), $config->get('api-platform.docs_formats')); }); $this->app->singleton(Pagination::class, function () use ($config) { diff --git a/src/Laravel/Tests/JsonApiTest.php b/src/Laravel/Tests/JsonApiTest.php index 3a143ac47e..50a94c107e 100644 --- a/src/Laravel/Tests/JsonApiTest.php +++ b/src/Laravel/Tests/JsonApiTest.php @@ -35,6 +35,7 @@ protected function defineEnvironment($app): void { tap($app['config'], function (Repository $config): void { $config->set('api-platform.formats', ['jsonapi' => ['application/vnd.api+json']]); + $config->set('api-platform.docs_formats', ['jsonapi' => ['application/vnd.api+json']]); }); }