api-platform / core

The server component of API Platform: hypermedia and GraphQL APIs in minutes
https://api-platform.com
MIT License
2.43k stars 866 forks source link

No entities defined throw TypeError #4040

Closed johnnypea closed 3 years ago

johnnypea commented 3 years ago

API Platform version(s) affected: 2.6.2 Symfony: 5.2.3 PHP: 8.0.2

Description
No entities defined throw

TypeError:
ksort(): Argument #1 ($array) must be of type array, ArrayObject given

  at vendor/api-platform/core/src/OpenApi/Serializer/OpenApiNormalizer.php:59
  at ksort(object(ArrayObject))
     (vendor/api-platform/core/src/OpenApi/Serializer/OpenApiNormalizer.php:59)
  at ApiPlatform\Core\OpenApi\Serializer\OpenApiNormalizer->recursiveClean(array('schemas' => object(ArrayObject), 'responses' => object(ArrayObject), 'parameters' => object(ArrayObject), 'examples' => object(ArrayObject), 'requestBodies' => object(ArrayObject), 'headers' => object(ArrayObject), 'securitySchemes' => object(ArrayObject), 'extensionProperties' => array()))
     (vendor/api-platform/core/src/OpenApi/Serializer/OpenApiNormalizer.php:73)
  at ApiPlatform\Core\OpenApi\Serializer\OpenApiNormalizer->recursiveClean(array('openapi' => '3.0.3', 'info' => array('title' => '', 'description' => '', 'version' => '0.0.0'), 'servers' => array(array('url' => '/', 'description' => '')), 'paths' => array(), 'components' => array('schemas' => object(ArrayObject), 'responses' => object(ArrayObject), 'parameters' => object(ArrayObject), 'examples' => object(ArrayObject), 'requestBodies' => object(ArrayObject), 'headers' => object(ArrayObject), 'securitySchemes' => object(ArrayObject), 'extensionProperties' => array()), 'security' => array(), 'tags' => array(), 'extensionProperties' => array()))
     (vendor/api-platform/core/src/OpenApi/Serializer/OpenApiNormalizer.php:44)
  at ApiPlatform\Core\OpenApi\Serializer\OpenApiNormalizer->normalize(object(OpenApi), 'json', array('preserve_empty_objects' => true, 'skip_null_values' => true))
     (vendor/api-platform/core/src/Swagger/Serializer/ApiGatewayNormalizer.php:51)
  at ApiPlatform\Core\Swagger\Serializer\ApiGatewayNormalizer->normalize(object(OpenApi), 'json', array())
     (vendor/symfony/serializer/Serializer.php:154)
  at Symfony\Component\Serializer\Serializer->normalize(object(OpenApi), 'json', array())
     (vendor/api-platform/core/src/Bridge/Symfony/Bundle/SwaggerUi/SwaggerUiAction.php:78)
  at ApiPlatform\Core\Bridge\Symfony\Bundle\SwaggerUi\SwaggerUiAction->__invoke(object(Request))
     (vendor/api-platform/core/src/Bridge/Symfony/Bundle/Action/SwaggerUiAction.php:115)
  at ApiPlatform\Core\Bridge\Symfony\Bundle\Action\SwaggerUiAction->__invoke(object(Request))
     (vendor/symfony/http-kernel/HttpKernel.php:157)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:79)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:195)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (public/index.php:20)                

How to reproduce
Define no entities.

Possible Solution
Better handle this state so one knows what is the problem.

remoteclient commented 3 years ago

Think it does come from this commit: https://github.com/api-platform/core/pull/4013

mehdibo commented 3 years ago

I'm having the same issue, any solution?

croftman commented 3 years ago

Same here

jacka33 commented 3 years ago

Remove these lines if ('schemas' === $key) { if ($value) { ksort($value); } }

alanpoulain commented 3 years ago

Fixed with https://github.com/api-platform/core/pull/4051. Please wait for the next patch release.

soyuka commented 3 years ago

closing as duplicate