Description
(PR: #19590)
Hi everyone,
I'm thinking about some use cases with the MapRequestPayload feature.
Is it possible to precise in the documentation if classes must have "built-in types" fields or not? (Like int
, string
, null
...)
Because I don't think that it's recommanded to use Enum directly in the class because user input (when sending payload) only contains built-in types.
For example, if using own Enum classes in the MapRequestPayload classes, if value does not match. Violations will expose the app's implementation.
enum MyEnum: string
{
case YES: 'yes';
case NO: 'no';
}
class MyMap
{
public string $attribute1;
public MyEnum $attribute2;
}
class MyController
{
public function __invoke(#[MapRequestPayload] MyMap $input): Reponse
{
return ...;
}
}
With the given example, if I receive :
{"attribute1":"hello", "attribute2": "wrong"}
I will have an error in the violations exposing my internal implementation App\...\MyEnum
. That's why I'm asking to precise in the documentation to use only built-in types.
(The error comes from the denormalization because the value entered does not match any existing value in the enum)