8000 bug #49850 [FrameworkBundle] Fix auto-discovering validator constrain… · symfony/symfony@ad2b68b · GitHub
[go: up one dir, main page]

Skip to content

Commit ad2b68b

Browse files
bug #49850 [FrameworkBundle] Fix auto-discovering validator constraints (nicolas-grekas)
This PR was merged into the 6.2 branch. Discussion ---------- [FrameworkBundle] Fix auto-discovering validator constraints | Q | A | ------------- | --- | Branch? | 6.2 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | #49397 | License | MIT | Doc PR | - Alternative to #49785 Note that this kind of container-assisted auto-discovery of non-service classes looks like an interesting pattern for many other subsystems. /cc `@symfony`/mergers `@mtarld` Commits ------- f60218c [FrameworkBundle] Fix auto-discovering validator constraints
2 parents 3b9fa3c + f60218c commit ad2b68b

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

src/Symfony/Bundle/FrameworkBundle/Command/DebugAutowiringCommand.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int
100100
$previousId = '-';
101101
$serviceIdsNb = 0;
102102
foreach ($serviceIds as $serviceId) {
103+
if ($builder->hasDefinition($serviceId) && $builder->getDefinition($serviceId)->hasTag('container.excluded')) {
104+
continue;
105+
}
103106
$text = [];
104107
$resolvedServiceId = $serviceId;
105108
if (!str_starts_with($serviceId, $previousId)) {

src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
$container->parameters()
2929
->set('validator.mapping.cache.file', param('kernel.cache_dir').'/validation.php');
3030

31+
$validatorsDir = \dirname((new \ReflectionClass(WhenValidator::class))->getFileName());
32+
3133
$container->services()
3234
->set('validator', ValidatorInterface::class)
3335
->factory([service('validator.builder'), 'getValidator'])
@@ -65,11 +67,15 @@
6567
abstract_arg('Constraint validators locator'),
6668
])
6769

70+
->load('Symfony\Component\Validator\Constraints\\', $validatorsDir.'/*Validator.php')
71+
->exclude($validatorsDir.'/ExpressionLanguageSyntaxValidator.php')
72+
->abstract()
73+
->tag('container.excluded')
74+
->tag('validator.constraint_validator')
75+
6876
->set('validator.expression', ExpressionValidator::class)
6977
->args([service('validator.expression_language')->nullOnInvalid()])
70-
->tag('validator.constraint_validator', [
71-
'alias' => 'validator.expression',
72-
])
78+
->tag('validator.constraint_validator')
7379

7480
->set('validator.expression_language', ExpressionLanguage::class)
7581
->args([service('cache.validator_expression_language')->nullOnInvalid()])
@@ -82,25 +88,19 @@
8288
->args([
8389
abstract_arg('Default mode'),
8490
])
85-
->tag('validator.constraint_validator', [
86-
'alias' => EmailValidator::class,
87-
])
91+
->tag('validator.constraint_validator')
8892

8993
->set('validator.not_compromised_password', NotCompromisedPasswordValidator::class)
9094
->args([
9195
service('http_client')->nullOnInvalid(),
9296
param('kernel.charset'),
9397
false,
9498
])
95-
->tag('validator.constraint_validator', [
96-
'alias' => NotCompromisedPasswordValidator::class,
97-
])
99+
->tag('validator.constraint_validator')
98100

99101
->set('validator.when', WhenValidator::class)
100102
->args([service('validator.expression_language')->nullOnInvalid()])
101-
->tag('validator.constraint_validator', [
102-
'alias' => WhenValidator::class,
103-
])
103+
->tag('validator.constraint_validator')
104104

105105
->set('validator.property_info_loader', PropertyInfoLoader::class)
106106
->args([

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"ext-xml": "*",
2222
"symfony/cache": "^5.4|^6.0",
2323
"symfony/config": "^6.1",
24-
"symfony/dependency-injection": "^6.2",
24+
"symfony/dependency-injection": "^6.2.8",
2525
"symfony/deprecation-contracts": "^2.1|^3",
2626
"symfony/error-handler": "^6.1",
2727
"symfony/event-dispatcher": "^5.4|^6.0",
@@ -58,7 +58,7 @@
5858
"symfony/serializer": "^6.1",
5959
"symfony/stopwatch": "^5.4|^6.0",
6060
"symfony/string": "^5.4|^6.0",
61-
"symfony/translation": "^5.4|^6.0",
61+
"symfony/translation": "^6.2.8",
6262
"symfony/twig-bundle": "^5.4|^6.0",
6363
"symfony/validator": "^5.4|^6.0",
6464
"symfony/workflow": "^5.4|^6.0",
@@ -91,7 +91,7 @@
9191
"symfony/security-csrf": "<5.4",
9292
"symfony/security-core": "<5.4",
9393
"symfony/stopwatch": "<5.4",
94-
"symfony/translation": "<5.4",
94+
"symfony/translation": "<6.2.8",
9595
"symfony/twig-bridge": "<5.4",
9696
"symfony/twig-bundle": "<5.4",
9797
"symfony/validator": "<5.4",

src/Symfony/Component/Translation/DependencyInjection/TranslatorPass.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,12 @@ public function process(ContainerBuilder $container)
5353
$constraintVisitorDefinition = $container->getDefinition('translation.extractor.visitor.constraint');
5454
$constraintClassNames = [];
5555

56-
foreach ($container->findTaggedServiceIds('validator.constraint_validator', true) as $id => $attributes) {
57-
$serviceDefinition = $container->getDefinition($id);
56+
foreach ($container->getDefinitions() as $definition) {
57+
if (!$definition->hasTag('validator.constraint_validator')) {
58+
continue;
59+
}
5860
// Resolve constraint validator FQCN even if defined as %foo.validator.class% parameter
59-
$className = $container->getParameterBag()->resolveValue($serviceDefinition->getClass());
61+
$className = $container->getParameterBag()->resolveValue($definition->getClass());
6062
// Extraction of the constraint class name from the Constraint Validator FQCN
6163
$constraintClassNames[] = str_replace('Validator', '', substr(strrchr($className, '\\'), 1));
6264
}

0 commit comments

Comments
 (0)
0