diff --git a/src/Symfony/Component/Validator/Mapping/Loader/AttributeLoader.php b/src/Symfony/Component/Validator/Mapping/Loader/AttributeLoader.php index 9674122b64115..62e9243a2b67b 100644 --- a/src/Symfony/Component/Validator/Mapping/Loader/AttributeLoader.php +++ b/src/Symfony/Component/Validator/Mapping/Loader/AttributeLoader.php @@ -37,6 +37,7 @@ public function loadClassMetadata(ClassMetadata $metadata): bool if ($constraint instanceof GroupSequence) { $metadata->setGroupSequence($constraint->groups); } elseif ($constraint instanceof GroupSequenceProvider) { + $metadata->setGroupProvider($constraint->provider); $metadata->setGroupSequenceProvider(true); } elseif ($constraint instanceof Constraint) { $metadata->addConstraint($constraint); diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/AttributeLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/AttributeLoaderTest.php index f9cb0da9b2d3c..ca025431c7b1c 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/AttributeLoaderTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/AttributeLoaderTest.php @@ -210,6 +210,22 @@ public function testLoadGroupSequenceProviderAttribute() $this->assertEquals($expected, $metadata); } + public function testLoadExternalGroupSequenceProvider() + { + $loader = $this->createAttributeLoader(); + $namespace = $this->getFixtureAttributeNamespace(); + + $metadata = new ClassMetadata($namespace.'\GroupProviderDto'); + $loader->loadClassMetadata($metadata); + + $expected = new ClassMetadata($namespace.'\GroupProviderDto'); + $expected->setGroupProvider('Symfony\Component\Validator\Tests\Dummy\DummyGroupProvider'); + $expected->setGroupSequenceProvider(true); + $expected->getReflectionClass(); + + $this->assertEquals($expected, $metadata); + } + protected function createAttributeLoader(): AttributeLoader { return new AttributeLoader(); @@ -219,4 +235,9 @@ protected function getFixtureNamespace(): string { return 'Symfony\Component\Validator\Tests\Fixtures\NestedAttribute'; } + + protected function getFixtureAttributeNamespace(): string + { + return 'Symfony\Component\Validator\Tests\Fixtures\Attribute'; + } }