MVC 与请求处理 · 第 10 题,共 12 题
一个表单将字段 startDate 以 "2026-10-15" 的形式发送给 createAction(Conference $conference);该属性是 \DateTime。如何正确映射这个值?
有 1 个正确答案。 中等
显示答案
答案
- C 在 initializeCreateAction() 中通过参数的属性映射配置设置日期格式(DateTimeConverter::CONFIGURATION_DATE_FORMAT = 'Y-m-d')
解析
在没有额外配置的情况下,DateTimeConverter 期望包含时间的 W3C 格式(例如 2026-10-15T00:00:00+02:00);"2026-10-15" 不匹配,映射会失败。$this->arguments->getArgument('conference')->getPropertyMappingConfiguration()->forProperty('startDate')->setTypeConverterOption(DateTimeConverter::class, DateTimeConverter::CONFIGURATION_DATE_FORMAT, 'Y-m-d') 用于设置格式。TCA 只影响后台,而校验器不会做任何转换。