[Validator] Simplified validateNodeForGroup
This commit is contained in:
parent
eeed509dfc
commit
5c479d803c
@ -646,43 +646,34 @@ class RecursiveContextualValidator implements ContextualValidatorInterface
|
|||||||
*/
|
*/
|
||||||
private function validateNodeForGroup($value, $objectHash, MetadataInterface $metadata = null, $group, ExecutionContextInterface $context)
|
private function validateNodeForGroup($value, $objectHash, MetadataInterface $metadata = null, $group, ExecutionContextInterface $context)
|
||||||
{
|
{
|
||||||
try {
|
$context->setGroup($group);
|
||||||
$context->setGroup($group);
|
|
||||||
|
|
||||||
foreach ($metadata->findConstraints($group) as $constraint) {
|
foreach ($metadata->findConstraints($group) as $constraint) {
|
||||||
// Prevent duplicate validation of constraints, in the case
|
// Prevent duplicate validation of constraints, in the case
|
||||||
// that constraints belong to multiple validated groups
|
// that constraints belong to multiple validated groups
|
||||||
if (null !== $objectHash) {
|
if (null !== $objectHash) {
|
||||||
$constraintHash = spl_object_hash($constraint);
|
$constraintHash = spl_object_hash($constraint);
|
||||||
|
|
||||||
if ($metadata instanceof ClassMetadataInterface) {
|
if ($metadata instanceof ClassMetadataInterface) {
|
||||||
if ($context->isClassConstraintValidated($objectHash, $constraintHash)) {
|
if ($context->isClassConstraintValidated($objectHash, $constraintHash)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
$context->markClassConstraintAsValidated($objectHash, $constraintHash);
|
|
||||||
} elseif ($metadata instanceof PropertyMetadataInterface) {
|
|
||||||
$propertyName = $metadata->getPropertyName();
|
|
||||||
|
|
||||||
if ($context->isPropertyConstraintValidated($objectHash, $propertyName, $constraintHash)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$context->markPropertyConstraintAsValidated($objectHash, $propertyName, $constraintHash);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$validator = $this->validatorFactory->getInstance($constraint);
|
$context->markClassConstraintAsValidated($objectHash, $constraintHash);
|
||||||
$validator->initialize($context);
|
} elseif ($metadata instanceof PropertyMetadataInterface) {
|
||||||
$validator->validate($value, $constraint);
|
$propertyName = $metadata->getPropertyName();
|
||||||
|
|
||||||
|
if ($context->isPropertyConstraintValidated($objectHash, $propertyName, $constraintHash)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$context->markPropertyConstraintAsValidated($objectHash, $propertyName, $constraintHash);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$context->setGroup(null);
|
$validator = $this->validatorFactory->getInstance($constraint);
|
||||||
} catch (\Exception $e) {
|
$validator->initialize($context);
|
||||||
// Should be put into a finally block once we switch to PHP 5.5
|
$validator->validate($value, $constraint);
|
||||||
$context->setGroup(null);
|
|
||||||
|
|
||||||
throw $e;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user