ExactFilter on enum typed property is not generating enums in docs.jsonopenapi
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 55/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Domaine
- api, documentation
Piste de recherche
Start by reading the QueryParameter and ExactFilter documentation generation paths, then compare the reported OpenAPI schemas for the legacy BackedEnumFilter and the new ExactFilter parameter. Identify where enum types are inferred for parameter schemas and check the relevant tests; done means enum values from an enum typed property appear in the generated schema for the new parameter.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
API Platform version(s) affected: 4.4.3
Description
I'm rewriting the legacy ApiFilter BackedEnumFilter to a #[QueryParameter] attribute using the ExactFilter that is kept in 6.0 (see this documentation: https://api-platform.com/docs/core/upgrade-guide/#legacy-doctrine-filters). The filter works but the enums are not generated anymore (which means the dropdown with available values is lost on the SwaggerUI). Now a normal text input is given which is not desired for our UI.
How to reproduce
So the old situation was:
#[ApiFilter(BackedEnumFilter::class, properties: ['type'])]
This generated the enums belonging to this type property in the docs.jsonopenapi of our api
In the new situation a QueryParameter is used with ExactFilter:
#[ApiResource(
operations: [
new GetCollection(
'/activiteiten/bijeenkomsten{._format}',
parameters: [
'type' => new QueryParameter(
filter: new ExactFilter(),
property: 'type',
),
]
),
],
)]
And type in this Entity is the following:
#[ORM\Column(name: 'act_type', type: Types::ENUM)]
private TypeEnum $type;
Filtering like this works when the user correctly inputs an enum value but the enums are not generated anymore in the docs.jsonopenapi
Possible Solution
Adding
schema: [
'type' => 'string',
'enum' => array_column(TypeEnum::cases(), 'value'),
],
to the requestParameter to retrieve the values of the enums here for the dropdown is not possible since only constant values can be given here.
Another idea is creating a custom filter and using the getOpenApiParameters() function to document the filter, but this seem #s impossible because ExactFilter is a final class.
Additional Context
This was the json in our docs.jsonopenapi:
{ "name": "type", "in": "query", "description": "", "required": false, "deprecated": false, "schema": { "type": "string", "enum": [ "cursus", "opleiding", "clinic", "themabijeenkomst", "clusterbijeenkomst", "symposium", "congres", "regioraad", "bondsraad", "officialbijeenkomst", "kaderbijeenkomst", "webinar", "workshop", "e-learning", "bijscholing" ] }, "style": "form", "explode": false }, { "name": "type[]", "in": "query", "description": "", "required": false, "deprecated": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "cursus", "opleiding", "clinic", "themabijeenkomst", "clusterbijeenkomst", "symposium", "congres", "regioraad", "bondsraad", "officialbijeenkomst", "kaderbijeenkomst", "webinar", "workshop", "e-learning", "bijscholing" ] } }, "style": "form", "explode": true },
And this is the json now with the Exactfilter in the QueryParameter:
{ "name": "type", "in": "query", "description": "Bijeenkomst type", "required": false, "deprecated": false, "schema": { "type": "string" }, "style": "form", "explode": true }, { "name": "type[]", "in": "query", "description": "Bijeenkomst type", "required": false, "deprecated": false, "schema": { "type": "array", "items": { "type": "string" } }, "style": "deepObject", "explode": true },
Which misses the enum in the schema attribute
THIS ISSUE WAS ALSO POSTED IN THE api-platform/api-platform REPOSITORY
https://github.com/api-platform/api-platform/issues/3017
- Langage dominant
- PHP
- Étoiles
- 2.6k
- Forks
- 988
- Merge moyen
- 4 j 10 h
- PR mergées (30 j)
- 109
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de api-platform/core
-
API Platform ignores array shapes in the JSON SchemaPeut-être pris @afraca l’a pris il y a 13 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
api-platform/core#8766 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
api-platform/core#8744 ·
Les mainteneurs répondent en général sous 2 jours
-
JSON:API: resource schemas (`*.jsonapi`) have `properties` but no `type: object`Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 Moins d'une heure Accessibilité débutants 80/100
api-platform/core#8701 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 3/5 1-2 jours Accessibilité débutants 66/100
api-platform/core#8815 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
api-platform/core#8814 · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de api-platform/core
Issues similaires
-
docs good first issue php
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
Area: UI Priority: High Status: Available Type: Maintenance
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
fix(flexi-content): wrap editor aria-labels with i18nPeut-être pris @Ankitavasudev l’a pris aujourd’hui. Ouvertefirst-timers-only focus: accessibility focus: blocks focus: i18n good first issue hacktoberfest help wanted type: bug up-for-grabs winter-of-code
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
noruzzamans/gslider-blocks#697 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
I forgot the add database cross reference buttonPeut-être pris @dsenalik l’a pris aujourd’hui. OuverteGood First Issue Group 2 - Data Storage | Tripal DBX | Chado Group 7 - Page Display
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100