objectManager = $objectManager;
$this->validatorResultFactory = $validatorResult;
}
/**
* @param object $entity
* @param ValidatorInterface[] $validators
* @param object|null $context
* @return ValidatorResultInterface
* @throws ConfigurationMismatchException
*/
public function validate($entity, array $validators, $context = null)
{
$messages = [];
$validatorArguments = [];
if ($context !== null) {
$validatorArguments['context'] = $context;
}
foreach ($validators as $validatorName) {
$validator = $this->objectManager->create($validatorName, $validatorArguments);
if (!$validator instanceof ValidatorInterface) {
throw new ConfigurationMismatchException(
__('The "%1" validator is not an instance of the general validator interface.', $validatorName)
);
}
$messages = array_merge($messages, $validator->validate($entity));
}
$validationResult = $this->validatorResultFactory->create();
foreach ($messages as $message) {
$validationResult->addMessage($message);
}
return $validationResult;
}
}