在我的 Symfony 4 应用程序中,我有一个包含日期类型字段的实体。默认情况下,Symfony 将其呈现为一组月、日、年的选择框。我已将其更改为文本小部件,以便我可以使用 jQuery UI 日期选择器。
但我在尝试提交表格时遇到了问题。
这是我的实体上的字段:
/**
* @ORM\Column(type="date")
*/
private $start_date;
这是我显示该字段的方式:
$builder->add('start_date', DateType::class, [
'widget' => 'single_text',
// prevents rendering it as type="date", to avoid HTML5 date pickers
'html5' => false,
// adds a class that can be selected in JavaScript
'attr' => ['class' => 'js-datepicker'],
])
在我的页面上使用 jquery 和 jqueryui,这允许显示日期选择器。
以下是我目前正在尝试从日期转换为字符串的方法,反之亦然。目前,我只是尝试使用硬编码日期,一旦我知道我在做什么,我当然会更改它。
$builder->get('start_date')
->addModelTransformer(new CallbackTransformer(
function ( $dateAsString ) {
return new \DateTime('2019-01-01');
},
function ( $dateAsDate ) {
return '2019-01-01';
}
));
提交表单会产生此错误:
预期参数类型为“DateTimeInterface”,给定“string”。
有谁知道如何将日期作为日期类型存储在实体中,同时在表单中将其呈现为字符串?