Skip to content

Commit

Permalink
[Validator] Removed legacy validator classes
Browse files Browse the repository at this point in the history
  • Loading branch information
webmozart committed Aug 6, 2014
1 parent fba2393 commit e844ed0
Show file tree
Hide file tree
Showing 29 changed files with 242 additions and 904 deletions.
Expand Up @@ -718,7 +718,6 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
switch ($config['api']) {
case '2.4':
$api = Validation::API_VERSION_2_4;
$container->setParameter('validator.validator_factory.class', $container->getParameter('validator.legacy_validator_factory.class'));
break;
case '2.5':
$api = Validation::API_VERSION_2_5;
Expand Down
Expand Up @@ -11,7 +11,6 @@
<parameter key="validator.mapping.cache.apc.class">Symfony\Component\Validator\Mapping\Cache\ApcCache</parameter>
<parameter key="validator.mapping.cache.prefix" />
<parameter key="validator.validator_factory.class">Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory</parameter>
<parameter key="validator.legacy_validator_factory.class">Symfony\Bundle\FrameworkBundle\Validator\LegacyConstraintValidatorFactory</parameter>
<parameter key="validator.expression.class">Symfony\Component\Validator\Constraints\ExpressionValidator</parameter>
<parameter key="validator.email.class">Symfony\Component\Validator\Constraints\EmailValidator</parameter>
</parameters>
Expand Down

This file was deleted.

Expand Up @@ -15,6 +15,7 @@
use Symfony\Component\Form\Extension\Validator\Util\ServerParams;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
use Symfony\Component\Validator\Exception\UnexpectedTypeException;

/**
Expand Down Expand Up @@ -53,7 +54,11 @@ public function validate($form, Constraint $constraint)

/* @var FormInterface $form */
$config = $form->getConfig();
$validator = $this->context->getValidator()->inContext($this->context);
$validator = null;

if ($this->context instanceof ExecutionContextInterface) {
$validator = $this->context->getValidator()->inContext($this->context);
}

if ($form->isSynchronized()) {
// Validate the form data only if transformation succeeded
Expand All @@ -62,7 +67,12 @@ public function validate($form, Constraint $constraint)
// Validate the data against its own constraints
if (self::allowDataWalking($form)) {
foreach ($groups as $group) {
$validator->atPath('data')->validate($form->getData(), null, $group);
if ($validator) {
$validator->atPath('data')->validate($form->getData(), null, $group);
} else {
// 2.4 API
$this->context->validate($form->getData(), 'data', $group, true);
}
}
}

Expand All @@ -72,7 +82,12 @@ public function validate($form, Constraint $constraint)
foreach ($constraints as $constraint) {
foreach ($groups as $group) {
if (in_array($group, $constraint->groups)) {
$validator->atPath('data')->validate($form->getData(), $constraint, $group);
if ($validator) {
$validator->atPath('data')->validate($form->getData(), $constraint, $group);
} else {
// 2.4 API
$this->context->validateValue($form->getData(), $constraint, 'data', $group);
}

// Prevent duplicate validation
continue 2;
Expand Down Expand Up @@ -101,20 +116,40 @@ public function validate($form, Constraint $constraint)
? (string) $form->getViewData()
: gettype($form->getViewData());

$this->context->buildViolation($config->getOption('invalid_message'))
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
->setInvalidValue($form->getViewData())
->setCode(Form::ERR_INVALID)
->addViolation();
if ($this->context instanceof ExecutionContextInterface) {
$this->context->buildViolation($config->getOption('invalid_message'))
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
->setInvalidValue($form->getViewData())
->setCode(Form::ERR_INVALID)
->addViolation();
} else {
// 2.4 API
$this->context->addViolation(
$config->getOption('invalid_message'),
array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')),
$form->getViewData(),
null,
Form::ERR_INVALID
);
}
}
}

// Mark the form with an error if it contains extra fields
if (count($form->getExtraData()) > 0) {
$this->context->buildViolation($config->getOption('extra_fields_message'))
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
->setInvalidValue($form->getExtraData())
->addViolation();
if ($this->context instanceof ExecutionContextInterface) {
$this->context->buildViolation($config->getOption('extra_fields_message'))
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
->setInvalidValue($form->getExtraData())
->addViolation();
} else {
// 2.4 API
$this->context->addViolation(
$config->getOption('extra_fields_message'),
array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))),
$form->getExtraData()
);
}
}

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

if (!empty($max) && $length > $max) {
$this->context->buildViolation($config->getOption('post_max_size_message'))
->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize())
->setInvalidValue($length)
->addViolation();
if ($this->context instanceof ExecutionContextInterface) {
$this->context->buildViolation($config->getOption('post_max_size_message'))
->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize())
->setInvalidValue($length)
->addViolation();
} else {
// 2.4 API
$this->context->addViolation(
$config->getOption('post_max_size_message'),
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize()),
$length
);
}
}
}
}
Expand Down

0 comments on commit e844ed0

Please sign in to comment.