X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fpath%2Fsrc%2FPlugin%2FValidation%2FConstraint%2FPathAliasConstraintValidator.php;fp=web%2Fcore%2Fmodules%2Fpath%2Fsrc%2FPlugin%2FValidation%2FConstraint%2FPathAliasConstraintValidator.php;h=e6771f76d2fab7d0e2875f407811a4af52f27aa3;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/web/core/modules/path/src/Plugin/Validation/Constraint/PathAliasConstraintValidator.php b/web/core/modules/path/src/Plugin/Validation/Constraint/PathAliasConstraintValidator.php new file mode 100644 index 000000000..e6771f76d --- /dev/null +++ b/web/core/modules/path/src/Plugin/Validation/Constraint/PathAliasConstraintValidator.php @@ -0,0 +1,57 @@ +entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('entity_type.manager') + ); + } + + /** + * {@inheritdoc} + */ + public function validate($value, Constraint $constraint) { + $entity = !empty($value->getParent()) ? $value->getEntity() : NULL; + + if ($entity && !$entity->isNew() && !$entity->isDefaultRevision()) { + /** @var \Drupal\Core\Entity\ContentEntityInterface $original */ + $original = $this->entityTypeManager->getStorage($entity->getEntityTypeId())->loadUnchanged($entity->id()); + if ($value->alias != $original->path->alias) { + $this->context->addViolation($constraint->message); + } + } + } + +}