8000 bug #20116 fixed AddConstraintValidatorsPass config (fabpot) · symfony/symfony@ee114d6 · GitHub
[go: up one dir, main page]

Skip to content

Commit ee114d6

Browse files
committed
bug #20116 fixed AddConstraintValidatorsPass config (fabpot)
This PR was merged into the 3.2-dev branch. Discussion ---------- fixed AddConstraintValidatorsPass config | Q | A | ------------- | --- | Branch? | 2.7 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | n/a | License | MIT | Doc PR | n/a Commits ------- 65131e2 added checks for public services on compiler passes that use service id and not references
2 parents cb52d42 + 65131e2 commit ee114d6

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ public function process(ContainerBuilder $container)
2828
$validators[$attributes[0]['alias']] = $id;
2929
}
3030

31-
$validators[$container->getDefinition($id)->getClass()] = $id;
31+
$definition = $container->getDefinition($id);
32+
33+
if (!$definition->isPublic()) {
34+
throw new InvalidArgumentException(sprintf('The service "%s" must be public as it can be lazy-loaded.', $id));
35+
}
36+
37+
if ($definition->isAbstract()) {
38+
throw new InvalidArgumentException(sprintf('The service "%s" must not be abstract as it can be lazy-loaded.', $id));
39+
}
40+
41+
$validators[$definition->getClass()] = $id;
3242
}
3343

3444
$container->getDefinition('validator.validator_factory')->replaceArgument(1, $validators);

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public function build(ContainerBuilder $container)
7676
// but as late as possible to get resolved parameters
7777
$container->addCompilerPass(new RegisterListenersPass(), PassConfig::TYPE_BEFORE_REMOVING);
7878
$container->addCompilerPass(new TemplatingPass());
79-
$container->addCompilerPass(new AddConstraintValidatorsPass());
79+
$container->addCompilerPass(new AddConstraintValidatorsPass(), PassConfig::TYPE_BEFORE_REMOVING);
8080
$container->addCompilerPass(new AddValidatorInitializersPass());
8181
$container->addCompilerPass(new AddConsoleCommandPass());
8282
$container->addCompilerPass(new FormPass());

0 commit comments

Comments
 (0)
0