You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
API Platform version(s) affected: 4.0.14 and maybe previous version such as 3.x
Description
Using Sylius Api Bundle, defining an existing Api resource operation when the same name is not replacing the old operation.
How to reproduce
Given I use Sylius.
And sylius/api-bundle the bundle is defining Api Resources using XML file format.
And I want to modify an existing Api resource operation such as sylius_api_shop_customer_post .
And I edit this api resource operation via an app file config/api_platform/Customer.yaml.
And I change the input class of this operation. When I test this operation. Then the modified input class must be used.
And this modified api resource operation should be replacing the previous one.
Exemple debugging the operation:
We can see 3 collections during the first command step:
[0] is the sylius/api-bundle defined Customer admin operations.
[1] is the sylius/api-bundle defined Customer shop operations.
[2] is the app defined Customer shop operation.
when ResourceMetadataCollection->getOperation('sylius_api_shop_customer_post')is called it returns the first operation found among those 3 collections and the Sylius shop one will be returned instead of the overwritten one from the app config file.
API Platform version(s) affected: 4.0.14 and maybe previous version such as 3.x
Description
Using Sylius Api Bundle, defining an existing Api resource operation when the same name is not replacing the old operation.
How to reproduce
See this repository branch diff to test it : Sylius/Sylius-Standard@2.0...Prometee:Sylius-Standard:api-resource-remove-fields.
Exemple debugging the operation:
We can see 3 collections during the first command step:
sylius/api-bundle
defined Customer admin operations.sylius/api-bundle
defined Customer shop operations.app
defined Customer shop operation.when
ResourceMetadataCollection->getOperation('sylius_api_shop_customer_post')
is called it returns the first operation found among those 3 collections and the Sylius shop one will be returned instead of the overwritten one from the app config file.Possible Solution
\ApiPlatform\Metadata\Resource\ResourceMetadataCollection
is iterating over each available metadata collections coming from various files (XML, YAML, PHP attributes). The classical order of iteration is from files contains in bundles to the app ones (https://github.com/Sylius/Sylius-Standard/blob/2.0/config/packages/api_platform.yaml#L4-L6).What we can imagine here is to revert the iterator to get the overwritten collection.
The text was updated successfully, but these errors were encountered: