-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
LegacyValidator doesn't provide B/C for validatePropertyValue #11139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
hmm, 2.4 indeed seem to accept both an object instance or a class name as first argument of |
oleg-andreyev
pushed a commit
to oleg-andreyev/symfony
that referenced
this issue
Jul 25, 2014
…h spl_object_hash($classMetadata)
oleg-andreyev
pushed a commit
to oleg-andreyev/symfony
that referenced
this issue
Jul 25, 2014
…h spl_object_hash($classMetadata)
I suppose |
@webmozart, no. It can be a regular property |
webmozart
added a commit
that referenced
this issue
Aug 4, 2014
…to validatePropertyValue() (webmozart) This PR was merged into the 2.5 branch. Discussion ---------- [Validator] Made it possible (again) to pass a class name to validatePropertyValue() | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #11139 | License | MIT | Doc PR | - In the 2.4 API it was possible to do both: ```php $validator->validatePropertyValue($object, 'propertyName', $myValue); $validator->validatePropertyValue('\Vendor\Namespace\ClassName', 'propertyName', $myValue); ``` In the 2.5 API, the second case was not supported anymore. This is fixed now. Together with the fix comes also a small change (also in the 2.4 API) which I'll demonstrate with a code snippet: ```php $metadata->addPropertyConstraint('ClassName', 'propertyName', new Callback( function ($value, $context) { var_dump($context->getRoot()); var_dump($context->getPropertyPath()); } )); $validator->validatePropertyValue('ClassName', 'propertyName', 'foobar'); ``` Before this PR, the output would be: ``` string(9) "ClassName" string(12) "propertyName" ``` This doesn't make a lot of sense, because usually the following condition holds during validation: ```php '' === $context->getPropertyPath() || $value === $propertyAccessor->getValue($context->getRoot(), $context->getPropertyPath()) ``` which obviously cannot work if root is a class name. Thus I changed the root and property path to become: ``` string(6) "foobar" string(0) "" ``` With this change, the condition holds also in this case. Commits ------- 2bf1b37 [Validator] Fixed ExpressionValidator when the validation root is not an object ef6f5f5 [Validator] Fixed: Made it possible (again) to pass a class name to Validator::validatePropertyValue()
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In 2.4 we can call validator on property this way:
but in 2.5
validatePropertyValue
generatescaused by
$cacheKey = spl_object_hash($object);
The text was updated successfully, but these errors were encountered: