-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Serializer] Unexpected value should throw UnexpectedValueException #49537
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
Conversation
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
57d73d0
to
3f2b947
Compare
Hey! I think @Seldaek has recently worked with this code. Maybe they can help review this? Cheers! Carsonbot |
src/Symfony/Component/Serializer/Normalizer/DateTimeNormalizer.php
Outdated
Show resolved
Hide resolved
src/Symfony/Component/Serializer/Normalizer/DateTimeNormalizer.php
Outdated
Show resolved
Hide resolved
a37127f
to
20c1a08
Compare
@@ -91,8 +91,8 @@ public function denormalize($data, string $type, string $format = null, array $c | |||
$dateTimeFormat = $context[self::FORMAT_KEY] ?? null; | |||
$timezone = $this->getTimezone($context); | |||
|
|||
if (null === $data || (\is_string($data) && '' === trim($data))) { | |||
throw NotNormalizableValueException::createForUnexpectedDataType('The data is either an empty string or null, you should pass a string that can be parsed with the passed format or a valid DateTime string.', $data, [Type::BUILTIN_TYPE_STRING], $context['deserialization_path'] ?? null, true); | |||
if (null === $data || !\is_string($data) || '' === trim($data)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have additionally adapted this if construct, since $data must always be a string.
20c1a08
to
af34c52
Compare
Thank you @ThomasTr. |
If a DateTime field to be serialised has a data type other than string (e.g. a serialised DateTime as array), a TypeException is thrown. This exception cannot be caught by a try/catch around the serializer.
This fix throws a NotNormalizableValueException that appears cleanly at the corresponding field.
This is my first pull request, please be kind to me :)