Symfony 6.4中MapRequestPayload无法映射含连字符的字段
解决方案
直接用Symfony Serializer组件的#[SerializedName]注解就能解决这个字段名映射问题,这是框架开箱支持的方案:
- 首先在你的
UpdateEmailStatusInput类里引入SerializedName注解,命名空间为Symfony\Component\Serializer\Annotation\SerializedName - 在
$eventData属性上添加该注解,指定对应请求体里的字段名event-data
示例代码如下:
// src/Input/UpdateEmailStatusInput.php namespace App\Input; use Symfony\Component\Serializer\Annotation\SerializedName; class UpdateEmailStatusInput { public string $signature; #[SerializedName('event-data')] public array $eventData; // 可根据实际数据结构调整类型,比如自定义对象类型 }
修改完成后,原有的#[MapRequestPayload]注解就能自动将请求体中的event-data字段值映射到$eventData属性上,无需额外配置,也不用再手动处理$request->getContent()。
如果你的项目是极简安装未包含Serializer组件,执行以下命令安装:
composer require symfony/serializer
内容的提问来源于stack exchange,提问作者GrzeGab
相关产品推荐
相关产品推荐

