-
-
Notifications
You must be signed in to change notification settings - Fork 109
Description
API Platform version(s) affected: 3.1.10
Description
I ran the generate command to generate ODM documents from a schema configuration that had two types one of them has a reference to the other one. After the documents got generated I tried to go to API Platform's API documentation and saw this error:
"Class "PostalAddress" does not exist".
How to reproduce
In an API Platform project that supports MongoDB add this configuration file:
# config/schema.yaml
openApi:
file: null
types:
Person:
properties:
name: ~
address: { range: https://schema.org/PostalAddress }
PostalAddress:
properties:
streetAddress: ~
namespaces:
entity: 'App\Document'
enum: 'App\Enum'
interface: 'App\Model'
annotationGenerators:
- ApiPlatform\SchemaGenerator\AnnotationGenerator\PhpDocAnnotationGenerator
attributeGenerators:
- ApiPlatform\SchemaGenerator\AttributeGenerator\ConstraintAttributeGenerator
- ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineMongoDBAttributeGenerator
- ApiPlatform\SchemaGenerator\AttributeGenerator\ApiPlatformCoreAttributeGenerator
- ApiPlatform\SchemaGenerator\AttributeGenerator\ConfigurationAttributeGenerator
debug: true
useInterface: false
checkIsGoodRelations: true
id:
generationStrategy: mongoid
and then run this command:
/vendor/bin/schema generate src/ config/schema.yaml
Possible Solution
The method getRelationName
in class ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineMongoDBAttributeGenerator
can have the logic to add the namespace of the reference class. currently, it returns only the name of the class. Something like the same method in class ApiPlatform\SchemaGenerator\AttributeGenerator\DoctrineOrmAttributeGenerator