【发布时间】:2014-08-29 18:54:21
【问题描述】:
我有一个日期时间字段,我正在使用 jquery datepicker 在文本字段中选择日期 (输入[类型=文本)。
当我想创建一个新记录时,没有问题。当我想编辑该记录时,我必须将日期时间数据设置为文本日期格式(Y-m-d)并打印到文本字段。
我的领域(在 orm.yml 中):
released_at:
type: datetime
nullable: true
我的表单生成器:
$builder->add(
'releasedAt',
null,
[
'label' => 'Çıkış Tarihi',
'mapped' => false, // false because setting the datetime data in the controller
'attr' => ['class' => 'date-picker']
]
);
我的表单pre_set_data:
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$game = $event->getData();
if ($game instanceof Game) {
$datetime = $game->getReleasedAt();
$form->get('releasedAt')->setData(\Datetime::createFromFormat('Y-m-d', $datetime->format('Y-m-d')));
} else {
return;
}
});
错误:
表单的视图数据应为标量、数组或 \ArrayAccess 的实例,但它是 DateTime 类的实例。你 可以通过将“data_class”选项设置为“DateTime”来避免此错误 或者通过添加一个转换类实例的视图转换器 DateTime 到标量、数组或 \ArrayAccess 的实例。
这里有什么问题?
---- 编辑----
我也试过这个:
$builder->add(
'releasedAt',
'datetime',
[
'label' => 'Çıkış Tarihi',
'date_widget' => 'single_text',
'date_format'=>'y-M-d',
'attr' => ['class' => 'date-picker']
]
)
但视图显示时间选择并用 div 包装所有字段。
我不想编辑日期时间表单视图。
第一个选项更适合我。
谢谢!
【问题讨论】:
标签: php symfony datetime formbuilder