Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / validator / Constraints / AbstractComparison.php
index e20a8f3fb7b050950a362bab25c15e845005548d..c41f371e3ae3a18c0d13c7c13377d61cab02a366 100644 (file)
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\Validator\Constraints;
 
+use Symfony\Component\PropertyAccess\PropertyAccess;
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
 
@@ -24,6 +25,7 @@ abstract class AbstractComparison extends Constraint
 {
     public $message;
     public $value;
+    public $propertyPath;
 
     /**
      * {@inheritdoc}
@@ -34,11 +36,18 @@ abstract class AbstractComparison extends Constraint
             $options = array();
         }
 
-        if (is_array($options) && !isset($options['value'])) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The %s constraint requires the "value" option to be set.',
-                get_class($this)
-            ));
+        if (is_array($options)) {
+            if (!isset($options['value']) && !isset($options['propertyPath'])) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires either the "value" or "propertyPath" option to be set.', get_class($this)));
+            }
+
+            if (isset($options['value']) && isset($options['propertyPath'])) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires only one of the "value" or "propertyPath" options to be set, not both.', get_class($this)));
+            }
+
+            if (isset($options['propertyPath']) && !class_exists(PropertyAccess::class)) {
+                throw new ConstraintDefinitionException(sprintf('The "%s" constraint requires the Symfony PropertyAccess component to use the "propertyPath" option.', get_class($this)));
+            }
         }
 
         parent::__construct($options);