-
-
Notifications
You must be signed in to change notification settings - Fork 844
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
Add support for GroupSequence #2014
Conversation
emilien-puget
commented
Jun 11, 2018
Q | A |
---|---|
Bug fix? | yes |
New feature? | no |
BC breaks? | no |
Deprecations? | no |
Tests pass? | yes |
Fixed tickets | #2009 |
License | MIT |
Doc PR | n/a |
483509e
to
6ca8f39
Compare
Neat, I see this as a new feature though. |
I am not sure, there is an entry in the documentation (https://api-platform.com/docs/core/validation#using-validation-groups) that mention them |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch! Thanks for the fix and the tests.
@@ -52,7 +53,9 @@ public function validate($data, array $context = []) | |||
$validationGroups = $validationGroups($data); | |||
} | |||
|
|||
$validationGroups = (array) $validationGroups; | |||
if (!($validationGroups instanceof GroupSequence)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inner parenthesis can be dropped.
fc9c736
to
ce28423
Compare
Thank you very much @emilien-puget |
It looks like the problem is also in the master branch, do you want me to do another PR ? |
No it's ok @emilien-puget, we merge lower branches in master regularly. Your commit we'll be in master in a few hours or days. |
Ok, thank you. I will close the issue then. |
Remove useless steps after #2014
* master: (947 commits) Initialize the 'totalCount' property to the default value to 0 Add index.php for test purpose Temporary fix for the tests Small code tweaks Update changelog Swagger UI and GrapQL assets update (api-platform#1975) fix cs Remove VersionEye badge Update changelog Update changelog Fix fatal error when subresource type is not defined added an --output option to the api:swagger:export better maxDepth in extractor Fix CS Fix issue api-platform#1711 fix CS fix issue api-platform#1717 FilterEagerLoadingExtension accepts joins with class name as join value Remove useless steps after api-platform#2014 Add support for GroupSequence ... # Conflicts: # .editorconfig # .php_cs.dist # .travis.yml # CHANGELOG.md # CONTRIBUTING.md # README.md # appveyor.yml # behat.yml.dist # composer.json # features/authorization/deny.feature # features/bootstrap/FeatureContext.php # features/bootstrap/GraphqlContext.php # features/bootstrap/HydraContext.php # features/bootstrap/JsonApiContext.php # features/bootstrap/JsonContext.php # features/bootstrap/SwaggerContext.php # features/doctrine/boolean_filter.feature # features/doctrine/date_filter.feature # features/doctrine/exists_filter.feature # features/doctrine/multiple_filter.feature # features/doctrine/numeric_filter.feature # features/doctrine/order_filter.feature # features/doctrine/range_filter.feature # features/doctrine/search_filter.feature # features/filter/property_filter.feature # features/graphql/authorization.feature # features/graphql/collection.feature # features/graphql/filters.feature # features/graphql/introspection.feature # features/graphql/mutation.feature # features/graphql/query.feature # features/hal/hal.feature # features/hal/problem.feature # features/http_cache/headers.feature # features/http_cache/tags.feature # features/hydra/collection.feature # features/hydra/error.feature # features/integration/fos_user.feature # features/jsonapi/collection_attributes.feature # features/jsonapi/errors.feature # features/jsonapi/filtering.feature # features/jsonapi/jsonapi.feature # features/jsonapi/ordering.feature # features/jsonapi/pagination.feature # features/jsonld/context.feature # features/main/circular_reference.feature # features/main/composite.feature # features/main/configurable.feature # features/main/content_negotiation.feature # features/main/crud.feature # features/main/custom_normalized.feature # features/main/custom_operation.feature # features/main/default_order.feature # features/main/non_resource.feature # features/main/operation.feature # features/main/overridden_operation.feature # features/main/relation.feature # features/main/subresource.feature # features/main/table_inheritance.feature # features/main/uuid.feature # features/security/send_security_headers.feature # features/security/strong_typing.feature # features/serializer/group_filter.feature # features/serializer/property_filter.feature # features/swagger/docs.feature # phpstan.neon # phpunit.xml.dist # src/Action/PlaceholderAction.php # src/Annotation/ApiFilter.php # src/Annotation/ApiProperty.php # src/Annotation/ApiResource.php # src/Api/CachedIdentifiersExtractor.php # src/Api/FilterLocatorTrait.php # src/Api/IdentifiersExtractor.php # src/Api/ResourceClassResolver.php # src/Bridge/Doctrine/Common/DataPersister.php # src/Bridge/Doctrine/EventListener/WriteListener.php # src/Bridge/Doctrine/Orm/CollectionDataProvider.php # src/Bridge/Doctrine/Orm/Extension/EagerLoadingExtension.php # src/Bridge/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php # src/Bridge/Doctrine/Orm/Extension/PaginationExtension.php # src/Bridge/Doctrine/Orm/Filter/AbstractFilter.php # src/Bridge/Doctrine/Orm/Filter/DateFilter.php # src/Bridge/Doctrine/Orm/Filter/ExistsFilter.php # src/Bridge/Doctrine/Orm/Filter/OrderFilter.php # src/Bridge/Doctrine/Orm/Filter/SearchFilter.php # src/Bridge/Doctrine/Orm/ItemDataProvider.php # src/Bridge/Doctrine/Orm/SubresourceDataProvider.php # src/Bridge/Doctrine/Orm/Util/IdentifierManagerTrait.php # src/Bridge/Doctrine/Orm/Util/QueryBuilderHelper.php # src/Bridge/FosUser/EventListener.php # src/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProvider.php # src/Bridge/Symfony/Bundle/Action/SwaggerUiAction.php # src/Bridge/Symfony/Bundle/ApiPlatformBundle.php # src/Bridge/Symfony/Bundle/Command/SwaggerCommand.php # src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php # src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DataProviderPass.php # src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DoctrineQueryExtensionPass.php # src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php # src/Bridge/Symfony/Bundle/Resources/config/api.xml # src/Bridge/Symfony/Bundle/Resources/config/data_persister.xml # src/Bridge/Symfony/Bundle/Resources/config/data_provider.xml # src/Bridge/Symfony/Bundle/Resources/config/doctrine_orm.xml # src/Bridge/Symfony/Bundle/Resources/config/hydra.xml # src/Bridge/Symfony/Bundle/Resources/config/problem.xml # src/Bridge/Symfony/Bundle/Resources/config/security.xml # src/Bridge/Symfony/Bundle/Resources/config/swagger.xml # src/Bridge/Symfony/Bundle/Resources/config/validator.xml # src/Bridge/Symfony/Bundle/Resources/public/graphiql/graphiql.css # src/Bridge/Symfony/Bundle/Resources/public/graphiql/graphiql.min.js # src/Bridge/Symfony/Bundle/Resources/public/swagger-ui/swagger-ui-bundle.js # src/Bridge/Symfony/Bundle/Resources/public/swagger-ui/swagger-ui-standalone-preset.js # src/Bridge/Symfony/Bundle/Resources/public/swagger-ui/swagger-ui.css # src/Bridge/Symfony/Bundle/Resources/views/Graphiql/index.html.twig # src/Bridge/Symfony/Bundle/Resources/views/SwaggerUi/index.html.twig # src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyMetadataFactory.php # src/Bridge/Symfony/Routing/ApiLoader.php # src/Bridge/Symfony/Routing/CachedRouteNameResolver.php # src/Bridge/Symfony/Routing/IriConverter.php # src/Bridge/Symfony/Routing/RouteNameResolver.php # src/Bridge/Symfony/Validator/EventListener/ValidateListener.php # src/Bridge/Symfony/Validator/Validator.php # src/DataPersister/ChainDataPersister.php # src/DataPersister/DataPersisterInterface.php # src/DataProvider/ChainCollectionDataProvider.php # src/DataProvider/ChainItemDataProvider.php # src/DataProvider/ChainSubresourceDataProvider.php # src/DataProvider/ItemDataProviderInterface.php # src/Documentation/Action/DocumentationAction.php # src/EventListener/AddFormatListener.php # src/EventListener/DeserializeListener.php # src/EventListener/EventPriorities.php # src/EventListener/ReadListener.php # src/EventListener/RespondListener.php # src/EventListener/SerializeListener.php # src/EventListener/WriteListener.php # src/GraphQl/Resolver/Factory/CollectionResolverFactory.php # src/GraphQl/Resolver/Factory/ItemMutationResolverFactory.php # src/GraphQl/Resolver/ItemResolver.php # src/GraphQl/Resolver/ResourceAccessCheckerTrait.php # src/GraphQl/Serializer/ItemNormalizer.php # src/GraphQl/Type/Definition/IterableType.php # src/GraphQl/Type/SchemaBuilder.php # src/Hal/Serializer/CollectionNormalizer.php # src/Hal/Serializer/EntrypointNormalizer.php # src/Hal/Serializer/ItemNormalizer.php # src/HttpCache/EventListener/AddTagsListener.php # src/HttpCache/PurgerInterface.php # src/Hydra/Serializer/CollectionFiltersNormalizer.php # src/Hydra/Serializer/CollectionNormalizer.php # src/Hydra/Serializer/ConstraintViolationListNormalizer.php # src/Hydra/Serializer/DocumentationNormalizer.php # src/Hydra/Serializer/EntrypointNormalizer.php # src/Hydra/Serializer/ErrorNormalizer.php # src/Hydra/Serializer/PartialCollectionViewNormalizer.php # src/JsonApi/EventListener/TransformFieldsetsParametersListener.php # src/JsonApi/Serializer/CollectionNormalizer.php # src/JsonApi/Serializer/ConstraintViolationListNormalizer.php # src/JsonApi/Serializer/EntrypointNormalizer.php # src/JsonApi/Serializer/ErrorNormalizer.php # src/JsonApi/Serializer/ItemNormalizer.php # src/JsonApi/Serializer/ReservedAttributeNameConverter.php # src/JsonLd/EntrypointBuilderInterface.php # src/Metadata/Extractor/XmlExtractor.php # src/Metadata/Property/Factory/AnnotationSubresourceMetadataFactory.php # src/Metadata/Property/Factory/CachedPropertyMetadataFactory.php # src/Metadata/Property/Factory/CachedPropertyNameCollectionFactory.php # src/Metadata/Property/Factory/ExtractorPropertyMetadataFactory.php # src/Metadata/Property/Factory/ExtractorPropertyNameCollectionFactory.php # src/Metadata/Property/PropertyMetadata.php # src/Metadata/Resource/Factory/CachedResourceMetadataFactory.php # src/Metadata/Resource/Factory/CachedResourceNameCollectionFactory.php # src/Metadata/Resource/Factory/OperationResourceMetadataFactory.php # src/Metadata/Resource/ResourceMetadata.php # src/Operation/Factory/CachedSubresourceOperationFactory.php # src/Operation/Factory/SubresourceOperationFactory.php # src/Problem/Serializer/ErrorNormalizer.php # src/Problem/Serializer/ErrorNormalizerTrait.php # src/Serializer/AbstractCollectionNormalizer.php # src/Serializer/AbstractConstraintViolationListNormalizer.php # src/Serializer/AbstractItemNormalizer.php # src/Serializer/ItemNormalizer.php # src/Serializer/SerializerContextBuilder.php # src/Swagger/Serializer/DocumentationNormalizer.php # src/Util/AnnotationFilterExtractorTrait.php # src/Util/ErrorFormatGuesser.php # src/Util/RequestAttributesExtractor.php # src/Validator/EventListener/ValidateListener.php # tests/Annotation/ApiFilterTest.php # tests/Annotation/ApiPropertyTest.php # tests/Annotation/ApiResourceTest.php # tests/Api/CachedIdentifiersExtractorTest.php # tests/Api/FilterLocatorTraitTest.php # tests/Api/IdentifiersExtractorTest.php # tests/Api/ResourceClassResolverTest.php # tests/Bridge/Doctrine/Common/DataPersisterTest.php # tests/Bridge/Doctrine/EventListener/WriteListenerTest.php # tests/Bridge/Doctrine/Orm/CollectionDataProviderTest.php # tests/Bridge/Doctrine/Orm/Extension/EagerLoadingExtensionTest.php # tests/Bridge/Doctrine/Orm/Extension/FilterEagerLoadingExtensionTest.php # tests/Bridge/Doctrine/Orm/Extension/FilterExtensionTest.php # tests/Bridge/Doctrine/Orm/Extension/PaginationExtensionTest.php # tests/Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/DateFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/ExistsFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/NumericFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/OrderFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/RangeFilterTest.php # tests/Bridge/Doctrine/Orm/Filter/SearchFilterTest.php # tests/Bridge/Doctrine/Orm/ItemDataProviderTest.php # tests/Bridge/Doctrine/Orm/PaginatorTest.php # tests/Bridge/Doctrine/Orm/SubresourceDataProviderTest.php # tests/Bridge/FosUser/EventListenerTest.php # tests/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProviderTest.php # tests/Bridge/Symfony/Bundle/ApiPlatformBundleTest.php # tests/Bridge/Symfony/Bundle/Command/SwaggerCommandTest.php # tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php # tests/Bridge/Symfony/Bundle/DependencyInjection/Compiler/AnnotationFilterPassTest.php # tests/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DoctrineQueryExtensionPassTest.php # tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php # tests/Bridge/Symfony/Routing/ApiLoaderTest.php # tests/Bridge/Symfony/Routing/CachedRouteNameResolverTest.php # tests/Bridge/Symfony/Routing/IriConverterTest.php # tests/Bridge/Symfony/Routing/RouteNameGeneratorTest.php # tests/Bridge/Symfony/Routing/RouteNameResolverTest.php # tests/Bridge/Symfony/Routing/RouterOperationPathResolverTest.php # tests/Bridge/Symfony/Validator/EventListener/ValidateListenerTest.php # tests/Bridge/Symfony/Validator/ValidatorTest.php # tests/DataProvider/ChainCollectionDataProviderTest.php # tests/DataProvider/ChainItemDataProviderTest.php # tests/DataProvider/ChainSubresourcedataProviderTest.php # tests/Documentation/Action/DocumentationActionTest.php # tests/EventListener/AddFormatListenerTest.php # tests/EventListener/DeserializeListenerTest.php # tests/EventListener/EventPrioritiesTest.php # tests/EventListener/ReadListenerTest.php # tests/EventListener/RespondListenerTest.php # tests/EventListener/SerializeListenerTest.php # tests/EventListener/WriteListenerTest.php # tests/Fixtures/FileConfigurations/parse_exception.yml # tests/Fixtures/TestBundle/Controller/CustomActionController.php # tests/Fixtures/TestBundle/Entity/AbstractDummy.php # tests/Fixtures/TestBundle/Entity/CircularReference.php # tests/Fixtures/TestBundle/Entity/Container.php # tests/Fixtures/TestBundle/Entity/CustomActionDummy.php # tests/Fixtures/TestBundle/Entity/DummyCar.php # tests/Fixtures/TestBundle/Entity/DummyGroup.php # tests/Fixtures/TestBundle/Entity/DummyProperty.php # tests/Fixtures/TestBundle/Entity/DummyTableInheritance.php # tests/Fixtures/TestBundle/Entity/DummyTableInheritanceRelated.php # tests/Fixtures/TestBundle/Entity/EmbeddableDummy.php # tests/Fixtures/TestBundle/Entity/EmbeddedDummy.php # tests/Fixtures/TestBundle/Entity/Foo.php # tests/Fixtures/TestBundle/Entity/FourthLevel.php # tests/Fixtures/TestBundle/Entity/JsonldContextDummy.php # tests/Fixtures/TestBundle/Entity/OverriddenOperationDummy.php # tests/Fixtures/TestBundle/Entity/RelatedToDummyFriend.php # tests/Fixtures/TestBundle/Entity/RelationEmbedder.php # tests/Fixtures/TestBundle/Entity/SecuredDummy.php # tests/Fixtures/TestBundle/Resources/config/api_resources.yml # tests/Fixtures/TestBundle/Serializer/Denormalizer/SerializableResourceDenormalizer.php # tests/Fixtures/app/AppKernel.php # tests/Fixtures/app/config/config_mysql.yml # tests/Fixtures/app/config/config_postgres.yml # tests/Fixtures/app/config/config_test.yml # tests/Fixtures/app/config/routing.yml # tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php # tests/GraphQl/Resolver/Factory/ItemMutationResolverFactoryTest.php # tests/GraphQl/Serializer/ItemNormalizerTest.php # tests/GraphQl/Type/Definition/IterableTypeTest.php # tests/GraphQl/Type/SchemaBuilderTest.php # tests/Hal/Serializer/CollectionNormalizerTest.php # tests/Hal/Serializer/EntrypointNormalizerTest.php # tests/Hal/Serializer/ItemNormalizerTest.php # tests/Hydra/Serializer/CollectionFiltersNormalizerTest.php # tests/Hydra/Serializer/CollectionNormalizerTest.php # tests/Hydra/Serializer/ConstraintViolationNormalizerTest.php # tests/Hydra/Serializer/DocumentationNormalizerTest.php # tests/Hydra/Serializer/EntrypointNormalizerTest.php # tests/Hydra/Serializer/ErrorNormalizerTest.php # tests/Hydra/Serializer/ItemNormalizerTest.php # tests/Hydra/Serializer/PartialCollectionViewNormalizerTest.php # tests/JsonApi/EventListener/TransformFieldsetsParametersListenerTest.php # tests/JsonApi/Serializer/CollectionNormalizerTest.php # tests/JsonApi/Serializer/ConstraintViolationNormalizerTest.php # tests/JsonApi/Serializer/EntrypointNormalizerTest.php # tests/JsonApi/Serializer/ErrorNormalizerTest.php # tests/JsonApi/Serializer/ItemNormalizerTest.php # tests/JsonApi/Serializer/ReservedAttributeNameConverterTest.php # tests/JsonLd/Action/ContextActionTest.php # tests/Metadata/Extractor/YamlExtractorTest.php # tests/Metadata/Property/Factory/AnnotationPropertyMetadataFactoryTest.php # tests/Metadata/Property/Factory/AnnotationPropertyNameCollectionFactoryTest.php # tests/Metadata/Property/Factory/ExtractorPropertyMetadataFactoryTest.php # tests/Metadata/Property/Factory/ExtractorPropertyNameCollectionFactoryTest.php # tests/Metadata/Property/Factory/FileConfigurationMetadataFactoryProvider.php # tests/Metadata/Property/PropertyMetadataTest.php # tests/Metadata/Resource/Factory/AnnotationResourceMetadataFactoryTest.php # tests/Metadata/Resource/Factory/ExtractorResourceMetadataFactoryTest.php # tests/Metadata/Resource/Factory/ExtractorResourceNameCollectionFactoryTest.php # tests/Metadata/Resource/Factory/FileConfigurationMetadataFactoryProvider.php # tests/Metadata/Resource/Factory/OperationResourceMetadataFactoryTest.php # tests/Metadata/Resource/ResourceMetadataTest.php # tests/Operation/Factory/CachedSubresourceOperationFactoryTest.php # tests/Operation/Factory/SubresourceOperationFactoryTest.php # tests/PathResolver/DashOperationPathResolverTest.php # tests/PathResolver/UnderscoreOperationPathResolverTest.php # tests/Problem/Serializer/ConstraintViolationNormalizerTest.php # tests/Problem/Serializer/ErrorNormalizerTest.php # tests/Security/EventListener/DenyAccessListenerTest.php # tests/Security/ResourceAccessCheckerTest.php # tests/Serializer/AbstractItemNormalizerTest.php # tests/Serializer/ItemNormalizerTest.php # tests/Serializer/SerializerContextBuilderTest.php # tests/Serializer/SerializerFilterContextBuilderTest.php # tests/Swagger/Serializer/DocumentationNormalizerTest.php # tests/Util/AnnotationFilterExtractorTraitTest.php # tests/Util/ErrorFormatGuesserTest.php # tests/Util/IriHelperTest.php # tests/Validator/EventListener/ValidateListenerTest.php # update-js.sh