/** * @param $data * @param IConstraintGroup[] $groups * * @return IValidationResult */ protected function applyConstraints($data, array $groups) { $result = new ValidationResult(); $data = $this->createValidationData($data); foreach ($groups as $group) { $values = $data->get($group->getName()); $isKeyWildcard = str_ends_with($group->getName(), '.#'); foreach ($values as $name => $value) { if ($isKeyWildcard) { $name = s('#%s', $name); } $group->setName($name); $groupResult = $group->check($value, $data); if ($groupResult->isFailed()) { $result->extend($groupResult); } } } return $this->filterResult($result); }