From df06ed455dddf10ec3f656653ec4b61922eeefd0 Mon Sep 17 00:00:00 2001
From: Philipp Rieber
Date: Sat, 21 Sep 2013 14:29:04 +0200
Subject: [PATCH 1/3] [Validator] Added hasser support for entity method
validation
Hasser support was added in addition to existing getter and isser support
---
.../Component/Validator/Mapping/Loader/AnnotationLoader.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Symfony/Component/Validator/Mapping/Loader/AnnotationLoader.php b/src/Symfony/Component/Validator/Mapping/Loader/AnnotationLoader.php
index 10745c72e7ffc..3a624072e0242 100644
--- a/src/Symfony/Component/Validator/Mapping/Loader/AnnotationLoader.php
+++ b/src/Symfony/Component/Validator/Mapping/Loader/AnnotationLoader.php
@@ -70,10 +70,10 @@ public function loadClassMetadata(ClassMetadata $metadata)
$metadata->addConstraint($constraint);
} elseif ($constraint instanceof Constraint) {
- if (preg_match('/^(get|is)(.+)$/i', $method->name, $matches)) {
+ if (preg_match('/^(get|is|has)(.+)$/i', $method->name, $matches)) {
$metadata->addGetterConstraint(lcfirst($matches[2]), $constraint);
} else {
- throw new MappingException(sprintf('The constraint on "%s::%s" cannot be added. Constraints can only be added on methods beginning with "get" or "is".', $className, $method->name));
+ throw new MappingException(sprintf('The constraint on "%s::%s" cannot be added. Constraints can only be added on methods beginning with "get", "is" or "has".', $className, $method->name));
}
}
From ef5c72bf47351e874611f3fa759155659b150b56 Mon Sep 17 00:00:00 2001
From: Philipp Rieber
Date: Tue, 24 Dec 2013 10:13:01 +0100
Subject: [PATCH 2/3] Implement "hasser" support in GetterMetadata
---
src/Symfony/Component/Validator/Mapping/GetterMetadata.php | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/Symfony/Component/Validator/Mapping/GetterMetadata.php b/src/Symfony/Component/Validator/Mapping/GetterMetadata.php
index 1e44062463728..4bd609d035fae 100644
--- a/src/Symfony/Component/Validator/Mapping/GetterMetadata.php
+++ b/src/Symfony/Component/Validator/Mapping/GetterMetadata.php
@@ -27,13 +27,16 @@ public function __construct($class, $property)
{
$getMethod = 'get'.ucfirst($property);
$isMethod = 'is'.ucfirst($property);
+ $hasMethod = 'has'.ucfirst($property);
if (method_exists($class, $getMethod)) {
$method = $getMethod;
} elseif (method_exists($class, $isMethod)) {
$method = $isMethod;
+ } elseif (method_exists($class, $hasMethod)) {
+ $method = $hasMethod;
} else {
- throw new ValidatorException(sprintf('Neither method %s nor %s exists in class %s', $getMethod, $isMethod, $class));
+ throw new ValidatorException(sprintf('Neither of these methods exist in class %s: %s, %s, %s', $class, $getMethod, $isMethod, $hasMethod));
}
parent::__construct($class, $method, $property);
From 10027db429442145552b3b86d42832620935d386 Mon Sep 17 00:00:00 2001
From: Philipp
Date: Sat, 4 Jan 2014 07:07:38 +0100
Subject: [PATCH 3/3] [Validator] Add isser/hasser tests for loaders and
metadata
---
.../Validator/Tests/Fixtures/Entity.php | 16 ++++++++++++++++
.../Tests/Mapping/GetterMetadataTest.php | 16 ++++++++++++++++
.../Mapping/Loader/AnnotationLoaderTest.php | 5 +++++
.../Tests/Mapping/Loader/XmlFileLoaderTest.php | 3 +++
.../Tests/Mapping/Loader/YamlFileLoaderTest.php | 3 +++
.../Tests/Mapping/Loader/constraint-mapping.xml | 6 ++++++
.../Tests/Mapping/Loader/constraint-mapping.yml | 4 ++++
7 files changed, 53 insertions(+)
diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/Entity.php b/src/Symfony/Component/Validator/Tests/Fixtures/Entity.php
index 70bdc5aec6998..fbd879a94eaf1 100644
--- a/src/Symfony/Component/Validator/Tests/Fixtures/Entity.php
+++ b/src/Symfony/Component/Validator/Tests/Fixtures/Entity.php
@@ -56,6 +56,22 @@ public function getLastName()
return $this->lastName;
}
+ /**
+ * @Assert\True
+ */
+ public function isValid()
+ {
+ return 'valid';
+ }
+
+ /**
+ * @Assert\True
+ */
+ public function hasPermissions()
+ {
+ return 'permissions';
+ }
+
public function getData()
{
return 'Overridden data';
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/GetterMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/GetterMetadataTest.php
index 1ce83e9159768..078159971af83 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/GetterMetadataTest.php
+++ b/src/Symfony/Component/Validator/Tests/Mapping/GetterMetadataTest.php
@@ -43,4 +43,20 @@ public function testGetPropertyValueFromOverriddenPublicGetter()
$this->assertEquals('Overridden data', $metadata->getPropertyValue($entity));
}
+
+ public function testGetPropertyValueFromIsser()
+ {
+ $entity = new Entity();
+ $metadata = new GetterMetadata(self::CLASSNAME, 'valid');
+
+ $this->assertEquals('valid', $metadata->getPropertyValue($entity));
+ }
+
+ public function testGetPropertyValueFromHasser()
+ {
+ $entity = new Entity();
+ $metadata = new GetterMetadata(self::CLASSNAME, 'permissions');
+
+ $this->assertEquals('permissions', $metadata->getPropertyValue($entity));
+ }
}
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/AnnotationLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/AnnotationLoaderTest.php
index 0d255b8fcad0d..e4ea6cfc6a498 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/AnnotationLoaderTest.php
+++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/AnnotationLoaderTest.php
@@ -18,6 +18,7 @@
use Symfony\Component\Validator\Constraints\NotNull;
use Symfony\Component\Validator\Constraints\Range;
use Symfony\Component\Validator\Constraints\Choice;
+use Symfony\Component\Validator\Constraints\True;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Validator\Tests\Fixtures\ConstraintA;
@@ -67,6 +68,8 @@ public function testLoadClassMetadata()
'choices' => array('A', 'B'),
)));
$expected->addGetterConstraint('lastName', new NotNull());
+ $expected->addGetterConstraint('valid', new True());
+ $expected->addGetterConstraint('permissions', new True());
// load reflection class so that the comparison passes
$expected->getReflectionClass();
@@ -134,6 +137,8 @@ public function testLoadClassMetadataAndMerge()
'choices' => array('A', 'B'),
)));
$expected->addGetterConstraint('lastName', new NotNull());
+ $expected->addGetterConstraint('valid', new True());
+ $expected->addGetterConstraint('permissions', new True());
// load reflection class so that the comparison passes
$expected->getReflectionClass();
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php
index 82195405e6614..e7243edc2c31f 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php
+++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php
@@ -18,6 +18,7 @@
use Symfony\Component\Validator\Constraints\Range;
use Symfony\Component\Validator\Constraints\Choice;
use Symfony\Component\Validator\Constraints\Regex;
+use Symfony\Component\Validator\Constraints\True;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Mapping\Loader\XmlFileLoader;
use Symfony\Component\Validator\Tests\Fixtures\ConstraintA;
@@ -69,6 +70,8 @@ public function testLoadClassMetadata()
'choices' => array('A', 'B'),
)));
$expected->addGetterConstraint('lastName', new NotNull());
+ $expected->addGetterConstraint('valid', new True());
+ $expected->addGetterConstraint('permissions', new True());
$this->assertEquals($expected, $metadata);
}
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/YamlFileLoaderTest.php
index 0d9a0b62c3122..1de902a551a40 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/YamlFileLoaderTest.php
+++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/YamlFileLoaderTest.php
@@ -17,6 +17,7 @@
use Symfony\Component\Validator\Constraints\NotNull;
use Symfony\Component\Validator\Constraints\Range;
use Symfony\Component\Validator\Constraints\Choice;
+use Symfony\Component\Validator\Constraints\True;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Mapping\Loader\YamlFileLoader;
use Symfony\Component\Validator\Tests\Fixtures\ConstraintA;
@@ -86,6 +87,8 @@ public function testLoadClassMetadata()
'choices' => array('A', 'B'),
)));
$expected->addGetterConstraint('lastName', new NotNull());
+ $expected->addGetterConstraint('valid', new True());
+ $expected->addGetterConstraint('permissions', new True());
$this->assertEquals($expected, $metadata);
}
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.xml b/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.xml
index 1eee1cb18036a..9b637e9a427fa 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.xml
+++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.xml
@@ -102,6 +102,12 @@
+
+
+
+
+
+
diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.yml b/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.yml
index e52d3f04b2ced..e96c5e08663a1 100644
--- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.yml
+++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/constraint-mapping.yml
@@ -53,6 +53,10 @@ Symfony\Component\Validator\Tests\Fixtures\Entity:
getters:
lastName:
- NotNull: ~
+ valid:
+ - "True": ~
+ permissions:
+ - "True": ~
Symfony\Component\Validator\Tests\Fixtures\GroupSequenceProviderEntity:
group_sequence_provider: true
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy