Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serializer groups on property no longer supported #404

Open
calls9-tylersmith opened this issue May 9, 2023 · 3 comments
Open

Serializer groups on property no longer supported #404

calls9-tylersmith opened this issue May 9, 2023 · 3 comments

Comments

@calls9-tylersmith
Copy link

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

@alanpoulain
Copy link
Member

Indeed, groups has been replaced by attributes. Could you make a PR to update the documentation?

@alanpoulain
Copy link
Member

See also #388.

@jkabat
Copy link

jkabat commented Dec 4, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants