Symfony API 转换日期

Symfony API transforming date

我正在用 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' 设置为 Y-m-d\TH:i:sP,但我遇到了同样的问题。

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

根据 DateType 文档:

input

The format of the input data - i.e. the format that the date is stored on your underlying object.

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

并且由于您发送的是单个字段,因此将 widget 设置为 single_text,因为 choice 的默认值将期望具有 day, month, year 的对象。