Description
Symfony version(s) affected
6.4
Description
Hey! I re create #50759 since a comment did not re-open it. Unfortunately, this is not fixed in the latest 6.4 Update.
If you use #[MapRequestPayload] and the payload is missing a single (or multiple) fields, the ViolationList created by the resolver does not contain the single missing field, but all asserts on every field.
How to reproduce
Updated the Project https://github.com/Havrin/symfony-payload-bug to 6.4 and tested again against http://localhost/api/payload
with payload:
{
"password": "abc"
}
Result (first object is a var_dump
inisde the exception subscriber):
object(App\DTO\User)#191 (0) {
[
"email":"App\DTO\User":private
]=>
uninitialized(string)
[
"password":"App\DTO\User":private
]=>
uninitialized(string)
}
{
"type": "https://symfony.com/errors/validation",
"title": "Validation Failed",
"status": 422,
"detail": "This value should be of type unknown.\nemail: This value should not be null.\nemail: This value should not be blank.\npassword: This value should not be null.\npassword: This value should not be blank.",
"violations": [
{
"propertyPath": "",
"title": "This value should be of type unknown.",
"template": "This value should be of type {{ type }}.",
"parameters": {
"{{ type }}": "unknown",
"hint": "Failed to create object because the class misses the \"email\" property."
}
},
{
"propertyPath": "email",
"title": "This value should not be null.",
"template": "This value should not be null.",
"parameters": {
"{{ value }}": "null"
},
"type": "urn:uuid:ad32d13f-c3d4-423b-909a-857b961eb720"
},
{
"propertyPath": "email",
"title": "This value should not be blank.",
"template": "This value should not be blank.",
"parameters": {
"{{ value }}": "null"
},
"type": "urn:uuid:c1051bb4-d103-4f74-8988-acbcafc7fdc3"
},
{
"propertyPath": "password",
"title": "This value should not be null.",
"template": "This value should not be null.",
"parameters": {
"{{ value }}": "null"
},
"type": "urn:uuid:ad32d13f-c3d4-423b-909a-857b961eb720"
},
{
"propertyPath": "password",
"title": "This value should not be blank.",
"template": "This value should not be blank.",
"parameters": {
"{{ value }}": "null"
},
"type": "urn:uuid:c1051bb4-d103-4f74-8988-acbcafc7fdc3"
}
],
"class": "Symfony\\Component\\HttpKernel\\Exception\\HttpException",
...
The first Violation of Type unknown
holds the correct message: "Failed to create object because the class misses the \"email\" property."
which should be returned instead of every assert/validation.
Possible Solution
No response
Additional Context
Apologize if re creating a new ticket was not the right move. Feel free to close this and re open the other one.