diff --git a/ApiDocGenerator.php b/ApiDocGenerator.php index 777073e..73f583d 100644 --- a/ApiDocGenerator.php +++ b/ApiDocGenerator.php @@ -15,6 +15,7 @@ use Nelmio\ApiDocBundle\Describer\DescriberInterface; use Nelmio\ApiDocBundle\Describer\ModelRegistryAwareInterface; use Nelmio\ApiDocBundle\Model\ModelRegistry; use Nelmio\ApiDocBundle\ModelDescriber\ModelDescriberInterface; +use Nelmio\ApiDocBundle\OpenApiPhp\DefaultOperationId; use Nelmio\ApiDocBundle\OpenApiPhp\ModelRegister; use OpenApi\Analysis; use OpenApi\Annotations\OpenApi; @@ -98,6 +99,9 @@ final class ApiDocGenerator // Calculate the associated schemas $modelRegistry->registerSchemas(); + $defaultOperationIdProcessor = new DefaultOperationId(); + $defaultOperationIdProcessor($analysis); + $analysis->process(); $analysis->validate(); diff --git a/OpenApiPhp/DefaultOperationId.php b/OpenApiPhp/DefaultOperationId.php new file mode 100644 index 0000000..b923b8c --- /dev/null +++ b/OpenApiPhp/DefaultOperationId.php @@ -0,0 +1,35 @@ +getAnnotationsOfType(OA\Operation::class); + + foreach ($allOperations as $operation) { + if (OA\UNDEFINED === $operation->operationId) { + $operation->operationId = null; + } + } + } +} diff --git a/Tests/Functional/FunctionalTest.php b/Tests/Functional/FunctionalTest.php index dacd12e..7ed88c1 100644 --- a/Tests/Functional/FunctionalTest.php +++ b/Tests/Functional/FunctionalTest.php @@ -456,4 +456,11 @@ class FunctionalTest extends WebTestCase $operation = $this->getOperation('/api/invoke', 'get'); $this->assertSame('Invokable!', $this->getOperationResponse($operation, 200)->description); } + + public function testDefaultOperationId() + { + $operation = $this->getOperation('/api/article/{id}', 'get'); + var_dump($operation->operationId); + $this->assertNull($operation->operationId); + } }