【问题标题】:How to pass ISO dates to Symfony如何将 ISO 日期传递给 Symfony
【发布时间】:2020-10-26 03:28:30
【问题描述】:

我正在尝试更改日期传递到后端的方式,因为它们可以来自各种时区,但会被解释为本地时区。

如果我回传dateConducted: "2019-12-07T04:35:00.000Z" 之类的日期,我会在响应中收到以下错误:

dateConducted: {errors: ["This value is not valid."],…}
  children: {date: {children: {year: [], month: [], day: []}}, time: {children: {hour: [], minute: []}}}
    date: {children: {year: [], month: [], day: []}}
    time: {children: {hour: [], minute: []}}
  errors: ["This value is not valid."]
    0: "This value is not valid."

我在项目文件中看不到任何需要将日期分解为有限组件的内容,所以我认为它在 Symfony 的某个地方。目前,这对我来说很神奇,因为我不明白要求是什么。我发现 Symfony 2.8 - Reference / Constraints / DateTime 似乎表明日期时间字符串应该可以工作,但它没有。

Symfony 2.8 - Reference / Types / DateType Field #input 还说:

输入¶
类型string 默认datetime

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

  • 字符串(例如 2011-06-05)
  • datetime(一个 DateTime 对象)
  • 数组(例如数组('year' => 2011, 'month' => 06, 'day' => 05))
  • 时间戳(例如 1307232000)

从表单返回的值也将被规范化回此格式。

【问题讨论】:

    标签: symfony validation datetime symfony-2.8


    【解决方案1】:

    在被保存实体的Type 类中,例如AppointmentType.php,改变

    ->add('dateConducted')
    

    ->add('dateConducted', null, [
      'widget' => 'single_text',
    ])
    

    Symfony 会将输入视为单个值,而不是日期部分和时间部分的两个数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 2016-04-07
      • 2015-03-10
      • 2019-09-09
      • 1970-01-01
      相关资源
      最近更新 更多