php - Symfony4 DateTimeType 作为 single_text 小部件的格式不正确
问题描述
这个问题开始让我发疯,我似乎无法找到有关此问题的任何正确信息或文档。
我正在使用 symfony 4.2.3
我有一个带有 dateTimeType 的表单:
->add(
'startDate',
DateTimeType::class,
[
'widget' => 'single_text',
'input' => 'datetime',
'html5' => false,
'attr' => [
'class' => 'combinedPickerInput',
'placeholder' => date('d/m/y H:i'),
],
'format' => 'd/m/Y H:i',
'date_format' => 'd/m/Y H:i',
'label' => 'form.specialOffer.startDate',
'translation_domain' => 'Default',
'required' => false,
]
)
当我使用 AJAX 提交表单时,$_POST 显示 ̀startDate = '24/04/2019 06:24'
但是,一旦我在表单上使用 getData() 函数,该值就会变成 DateTime 对象(应该如此),但格式不正确
startDate = {
date = 2018-12-24 06:04:00.000000,
timezone_type = 3
timezone = "Europe/Paris"
}
我实体中的字段是
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $startDate;
我也尝试过使用 DateType 而不是 DateTimeType 但这并没有改变任何东西。
->add(
'endDate',
DateType::class,
[
'widget' => 'single_text',
'html5' => false,
'attr' => [
'class' => 'combinedPickerInput',
'placeholder' => date('d/m/y H:i'),
],
'format' => 'd/m/Y H:i',
'label' => 'form.specialOffer.endDate',
'translation_domain' => 'Default',
'required' => false,
]
)
结果与 DateTimeType 完全相同
在查看 DateTimeType 类时,似乎有些不对劲。设置日期格式时代码如下
$dateFormat = \is_int($options['date_format']) ? $options['date_format'] : self::DEFAULT_DATE_FORMAT;
对我来说,这使得使用不是 int 的 date_format 成为不可能。但是,下面的验证和错误消息似乎表明实际上应该可以为自定义日期格式传递字符串
if (!\in_array($dateFormat, self::$acceptedFormats, true)) {
throw new InvalidOptionsException('The "date_format" option must be one of the IntlDateFormatter constants (FULL, LONG, MEDIUM, SHORT) or a string representing a custom format.');
}
我很迷茫,任何帮助将不胜感激
解决方案
您可以尝试使用dd/MM/yyyy H:i更改格式选项值并使用 DateTimeType 而不是 DateType
->add('endDate', DateType::class, [
'widget' => 'single_text',
'html5' => false,
'attr' => [
'class' => 'combinedPickerInput',
'placeholder' => date('d/m/y H:i'),
],
'format' => 'dd/MM/yyyy H:i',
'label' => 'form.specialOffer.endDate',
'translation_domain' => 'Default',
'required' => false,
])
推荐阅读
- android - IAP 适用于 Live App Testing,但不适用于 Appstore 版本
- vba - 从网络主机(局域网连接的 PC)获取操作系统信息
- swift - Fontawesome 显示问号而不是图标
- php - 我如何获得要在 wordpress 中显示的 html 响应
- apache-kafka - 使用 Kafka Streams 测试窗口聚合
- haskell - 字符串仅包含 haskell 中的字母表
- python - 当没有足够的资源可用时,scrapy 的行为如何
- android - 单击呼叫按钮时 ACTION_DIAL 找不到 Intent
- c# - 在 Visual Studio 代码上运行 C# 代码的方法不止一种?
- oracle - Windows 10 启动时 Oracle 数据库错误