[Serializer] Unexpected value should throw UnexpectedValueException#49537
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 |
|
Hey! I think @Seldaek has recently worked with this code. Maybe they can help review this? Cheers! Carsonbot |
|
|
||
| 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.
I have additionally adapted this if construct, since $data must always be a string.
|
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 :)