Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / lib / Drupal / Core / Entity / Plugin / Validation / Constraint / EntityHasFieldConstraintValidator.php
diff --git a/web/core/lib/Drupal/Core/Entity/Plugin/Validation/Constraint/EntityHasFieldConstraintValidator.php b/web/core/lib/Drupal/Core/Entity/Plugin/Validation/Constraint/EntityHasFieldConstraintValidator.php
new file mode 100644 (file)
index 0000000..d16a079
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\Core\Entity\Plugin\Validation\Constraint;
+
+use Drupal\Core\Entity\FieldableEntityInterface;
+use Symfony\Component\Validator\Constraint;
+use Symfony\Component\Validator\ConstraintValidator;
+
+/**
+ * Validates the EntityHasField constraint.
+ */
+class EntityHasFieldConstraintValidator extends ConstraintValidator {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validate($entity, Constraint $constraint) {
+    if (!isset($entity)) {
+      return;
+    }
+
+    /** @var \Drupal\Core\Entity\Plugin\Validation\Constraint\EntityHasFieldConstraint $constraint */
+    if (!($entity instanceof FieldableEntityInterface)) {
+      $this->context->addViolation($constraint->notFieldableMessage);
+      return;
+    }
+
+    if (!$entity->hasField($constraint->field_name)) {
+      $this->context->addViolation($constraint->message, [
+        '%field_name' => $constraint->field_name,
+      ]);
+    }
+  }
+
+}