首页 > 解决方案 > Symfony API 转换日期

问题描述

我正在用 Symfony 4 制作一个 API,我试图让它接受一个日期,但它一直抛出Unable to transform data for property path "dateofbirth": Expected a string.错误。

实体中的字段:

/**
 * @ORM\Column(type="date", nullable=true)
 */
private $dateofbirth;

表单中的字段:

->add('dateofbirth', DateType::class, [
    'html5' => false,
    'required' => false,
    'input' => 'string',
    'input_format' => 'Y-m-d'
])

"dateofbirth": "1990-02-12"现在,如果我用例如JSON 发送它,它会抛出该错误。我也试过"dateofbirth": "1990-02-12T00:00:00+01:00"'input_format'set to发送类似的东西Y-m-d\TH:i:sP,但我遇到了同样的问题。

一段时间以来,我一直在搞乱选项数组,并且我还尝试了上述配置以外的配置,但这就是我现在所拥有的。我希望有人能告诉我什么是有效的,而不是列出我尝试过的所有无效的方法。

标签: phpsymfonydoctrine-ormsymfony4symfony-forms

解决方案


根据DateType文档:

输入

输入数据的格式 - 即日期存储在基础对象上的格式。

由于您已将实体声明为@Column(type="date")应设置inputdatetime. Symfony 将根据创建对象input_format并将其映射到模型。

并且由于您要发送单个字段,因此设置widgetsingle_text,作为 的默认值choice将期望一个带有 的对象day, month, year


推荐阅读