Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6b8fe14

Browse files
committed
minor #11587 [Validator] Removed legacy validator classes (webmozart)
This PR was merged into the 2.5 branch. Discussion ---------- [Validator] Removed legacy validator classes | Q | A | ------------- | --- | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - This PR removes the legacy validator classes again and adds the API checks inside the constraint validators instead. Commits ------- e844ed0 [Validator] Removed legacy validator classes
2 parents 8bedf86 + e844ed0 commit 6b8fe14

29 files changed

+242
-904
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,6 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
718718
switch ($config['api']) {
719719
case '2.4':
720720
$api = Validation::API_VERSION_2_4;
721-
$container->setParameter('validator.validator_factory.class', $container->getParameter('validator.legacy_validator_factory.class'));
722721
break;
723722
case '2.5':
724723
$api = Validation::API_VERSION_2_5;

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<parameter key="validator.mapping.cache.apc.class">Symfony\Component\Validator\Mapping\Cache\ApcCache</parameter>
1212
<parameter key="validator.mapping.cache.prefix" />
1313
<parameter key="validator.validator_factory.class">Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory</parameter>
14-
<parameter key="validator.legacy_validator_factory.class">Symfony\Bundle\FrameworkBundle\Validator\LegacyConstraintValidatorFactory</parameter>
1514
<parameter key="validator.expression.class">Symfony\Component\Validator\Constraints\ExpressionValidator</parameter>
1615
<parameter key="validator.email.class">Symfony\Component\Validator\Constraints\EmailValidator</parameter>
1716
</parameters>

src/Symfony/Bundle/FrameworkBundle/Validator/LegacyConstraintValidatorFactory.php

Lines changed: 0 additions & 95 deletions
This file was deleted.

src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php

Lines changed: 60 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Form\Extension\Validator\Util\ServerParams;
1616
use Symfony\Component\Validator\Constraint;
1717
use Symfony\Component\Validator\ConstraintValidator;
18+
use Symfony\Component\Validator\Context\ExecutionContextInterface;
1819
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
1920

2021
/**
@@ -53,7 +54,11 @@ public function validate($form, Constraint $constraint)
5354

5455
/* @var FormInterface $form */
5556
$config = $form->getConfig();
56-
$validator = $this->context->getValidator()->inContext($this->context);
57+
$validator = null;
58+
59+
if ($this->context instanceof ExecutionContextInterface) {
60+
$validator = $this->context->getValidator()->inContext($this->context);
61+
}
5762

5863
if ($form->isSynchronized()) {
5964
// Validate the form data only if transformation succeeded
@@ -62,7 +67,12 @@ public function validate($form, Constraint $constraint)
6267
// Validate the data against its own constraints
6368
if (self::allowDataWalking($form)) {
6469
foreach ($groups as $group) {
65-
$validator->atPath('data')->validate($form->getData(), null, $group);
70+
if ($validator) {
71+
$validator->atPath('data')->validate($form->getData(), null, $group);
72+
} else {
73+
// 2.4 API
74+
$this->context->validate($form->getData(), 'data', $group, true);
75+
}
6676
}
6777
}
6878

@@ -72,7 +82,12 @@ public function validate($form, Constraint $constraint)
7282
foreach ($constraints as $constraint) {
7383
foreach ($groups as $group) {
7484
if (in_array($group, $constraint->groups)) {
75-
$validator->atPath('data')->validate($form->getData(), $constraint, $group);
85+
if ($validator) {
86+
$validator->atPath('data')->validate($form->getData(), $constraint, $group);
87+
} else {
88+
// 2.4 API
89+
$this->context->validateValue($form->getData(), $constraint, 'data', $group);
90+
}
7691

7792
// Prevent duplicate validation
7893
continue 2;
@@ -101,20 +116,40 @@ public function validate($form, Constraint $constraint)
101116
? (string) $form->getViewData()
102117
: gettype($form->getViewData());
103118

104-
$this->context->buildViolation($config->getOption('invalid_message'))
105-
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
106-
->setInvalidValue($form->getViewData())
107-
->setCode(Form::ERR_INVALID)
108-
->addViolation();
119+
if ($this->context instanceof ExecutionContextInterface) {
120+
$this->context->buildViolation($config->getOption('invalid_message'))
121+
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
122+
->setInvalidValue($form->getViewData())
123+
->setCode(Form::ERR_INVALID)
124+
->addViolation();
125+
} else {
126+
// 2.4 API
127+
$this->context->addViolation(
128+
$config->getOption('invalid_message'),
129+
array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')),
130+
$form->getViewData(),
131+
null,
132+
Form::ERR_INVALID
133+
);
134+
}
109135
}
110136
}
111137

112138
// Mark the form with an error if it contains extra fields
113139
if (count($form->getExtraData()) > 0) {
114-
$this->context->buildViolation($config->getOption('extra_fields_message'))
115-
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
116-
->setInvalidValue($form->getExtraData())
117-
->addViolation();
140+
if ($this->context instanceof ExecutionContextInterface) {
141+
$this->context->buildViolation($config->getOption('extra_fields_message'))
142+
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
143+
->setInvalidValue($form->getExtraData())
144+
->addViolation();
145+
} else {
146+
// 2.4 API
147+
$this->context->addViolation(
148+
$config->getOption('extra_fields_message'),
149+
array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))),
150+
$form->getExtraData()
151+
);
152+
}
118153
}
119154

120155
// Mark the form with an error if the uploaded size was too large
@@ -124,10 +159,19 @@ public function validate($form, Constraint $constraint)
124159
$max = $this->serverParams->getPostMaxSize();
125160

126161
if (!empty($max) && $length > $max) {
127-
$this->context->buildViolation($config->getOption('post_max_size_message'))
128-
->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize())
129-
->setInvalidValue($length)
130-
->addViolation();
162+
if ($this->context instanceof ExecutionContextInterface) {
163+
$this->context->buildViolation($config->getOption('post_max_size_message'))
164+
->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize())
165+
->setInvalidValue($length)
166+
->addViolation();
167+
} else {
168+
// 2.4 API
169+
$this->context->addViolation(
170+
$config->getOption('post_max_size_message'),
171+
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize()),
172+
$length
173+
);
174+
}
131175
}
132176
}
133177
}

0 commit comments

Comments
 (0)