schema-generator
schema-generator copied to clipboard
Serializer groups on property no longer supported
API Platform version(s) affected: 3.1.6 (Schema-generator version 5.2.0)
Description
The groups
parameter no longer generates Groups
attribute for properties as stated in the documentation.
How to reproduce
The below config (excess removed) describes a referral resource that has one property person
. A Person
has one property email
. The normalization context of the post collection endpoint for Referral
has the serialization group set to "referral:post:write" (this works as expected). The email
property on Person
has the groups
option set to referral:post:write
such that a person entity can be created from the Referral
collection post resource.
types:
Referral:
guessFrom: Referral
properties:
person: {range: Person, cardinality: (*..1)}
operations:
Get:
normalizationContext:
groups: [referral:item:read]
GetCollection:
normalizationContext:
groups: [referral:collection:read]
Post:
denormalizationContext:
groups: [referral:post:write]
normalizationContext:
groups: [referral:post:read]
Person:
properties:
email:
range: https://schema.org/Email
required: true
groups:
- referral:post:write
Outcome:
When generating this schema, the groups
option on Person
is ignored. Looking through the code, it looks like the option is defined, but never used. This functionality used to work in version 4.0.1 through ApiPlatform\SchemaGenerator\AttributeGenerator\SerializerGroupsAttributeGenerator
. This functionality seems like it's no longer available, though it's still referenced in the documentation.
Possible Solution
It is possible to set the Groups attribute using the attributes
option, but this is a workaround. In this case it would still be necessary to at least remove groups
from the list of supported options in the documentation, and code.
Ideally the functionality would be added back into the current version.
Additional Context
Indeed, groups
has been replaced by attributes
. Could you make a PR to update the documentation?
See also https://github.com/api-platform/schema-generator/pull/388.
It is done by AttributeGenerator, however USE imports are missing in the generated classes. Can anybody fix it? Or should I create PR (Im using this generator for the first time, it might take the time).
EDIT: I was able to fix it using following configuration
uses:
Groups:
name: Symfony\Component\Serializer\Annotation\Groups