/** * @param ConstraintViolationInterface|ConstraintViolation $error * @return array */ private function getValidationErrorArray($error) { return ['i18nKey' => method_exists($error->getConstraint(), 'getI18nKey') ? $error->getConstraint()->getI18nKey() : get_class($error->getConstraint()), 'messageTemplate' => $error->getMessageTemplate(), 'plural' => $error->getPlural(), 'invalidValue' => $error->getInvalidValue(), 'parameters' => $error->getParameters(), 'message' => $error->getMessage(), 'path' => $error->getPropertyPath()]; }
/** * {@inheritdoc} */ public function filterByFields(array $field_names) { $this->groupViolationOffsets(); $new_violations = []; foreach (array_intersect_key($this->violationOffsetsByField, array_flip($field_names)) as $field_name => $offsets) { foreach ($offsets as $offset) { $violation = $this->get($offset); // Take care of composite field violations and re-map them to some // covered field if necessary. if ($violation->getConstraint() instanceof CompositeConstraintBase) { $covered_fields = $violation->getConstraint()->coversFields(); // Keep the composite field if it covers some remaining field and put // a violation on some other covered field instead. if ($remaining_fields = array_diff($covered_fields, $field_names)) { $message_params = ['%field_name' => $field_name]; $violation = new ConstraintViolation($this->t('The validation failed because the value conflicts with the value in %field_name, which you cannot access.', $message_params), 'The validation failed because the value conflicts with the value in %field_name, which you cannot access.', $message_params, $violation->getRoot(), reset($remaining_fields), $violation->getInvalidValue(), $violation->getPlural(), $violation->getCode(), $violation->getConstraint(), $violation->getCause()); $new_violations[] = $violation; } } $this->remove($offset); } } foreach ($new_violations as $violation) { $this->add($violation); } return $this; }