function EntityFormDisplay::movePropertyPathViolationsRelativeToField
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php \Drupal\Core\Entity\Entity\EntityFormDisplay::movePropertyPathViolationsRelativeToField()
- 10 core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php \Drupal\Core\Entity\Entity\EntityFormDisplay::movePropertyPathViolationsRelativeToField()
- 11.x core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php \Drupal\Core\Entity\Entity\EntityFormDisplay::movePropertyPathViolationsRelativeToField()
Moves the property path to be relative to field level.
Parameters
string $field_name: The field name.
\Symfony\Component\Validator\ConstraintViolationListInterface $violations: The violations.
Return value
\Symfony\Component\Validator\ConstraintViolationList A new constraint violation list with the changed property path.
1 call to EntityFormDisplay::movePropertyPathViolationsRelativeToField()
- EntityFormDisplay::flagWidgetsErrorsFromViolations in core/
lib/ Drupal/ Core/ Entity/ Entity/ EntityFormDisplay.php - Flags entity validation violations as form errors.
File
-
core/
lib/ Drupal/ Core/ Entity/ Entity/ EntityFormDisplay.php, line 286
Class
- EntityFormDisplay
- Configuration entity.
Namespace
Drupal\Core\Entity\EntityCode
protected function movePropertyPathViolationsRelativeToField($field_name, ConstraintViolationListInterface $violations) {
$new_violations = new ConstraintViolationList();
foreach ($violations as $violation) {
// All the logic below is necessary to change the property path of the
// violations to be relative to the item list, so like title.0.value gets
// changed to 0.value. Sadly constraints in Symfony don't have setters so
// we have to create new objects.
/** @var \Symfony\Component\Validator\ConstraintViolationInterface $violation */
// Create a new violation object with just a different property path.
$violation_path = $violation->getPropertyPath();
$path_parts = explode('.', $violation_path);
if ($path_parts[0] === $field_name) {
unset($path_parts[0]);
}
$new_path = implode('.', $path_parts);
$constraint = NULL;
$cause = NULL;
$parameters = [];
$plural = NULL;
if ($violation instanceof ConstraintViolation) {
$constraint = $violation->getConstraint();
$cause = $violation->getCause();
$parameters = $violation->getParameters();
$plural = $violation->getPlural();
}
$new_violation = new ConstraintViolation($violation->getMessage(), $violation->getMessageTemplate(), $parameters, $violation->getRoot(), $new_path, $violation->getInvalidValue(), $plural, $violation->getCode(), $constraint, $cause);
$new_violations->add($new_violation);
}
return $new_violations;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.