【发布时间】:2016-03-21 21:12:50
【问题描述】:
我必须向我的 FormType 添加一个表单事件侦听器 (PRE_SUBMIT),以便根据用户提交的另一个字段的值设置字段的默认值:
//In my FormType:
public function onPreSubmit(FormEvent $event)
{
$formData = $event->getData();
if (empty($formData['time_until'])) {
$date = new \DateTime($formData['time_from']);
$date->add(new \DateInterval('PT1H'));
$formData['time_until'] = $date->format('Y-m-d H:i');
}
$event->setData($formData);
}
time_unti 键被设置,然后它的值被映射到表单的time_until 字段,该字段是datetime 类型:
->add('time_until', datetime, [
'required' => false,
'input' => 'datetime',
'widget' => 'single_text',
'format' => 'yyyy-MM-dd HH:mm',
'label' => false,
])
目前没有问题。但是,我需要访问控制器中表单字段的规范化值,而不是调用 $form->handleRequest($request); 后表单上存在的 DateTime 对象。
通过“规范化”,我的意思是我希望能够做到:
$form->get('time_until') 并返回一个格式为 'yyyy-MM-dd HH:mm' 的字符串,而不是存储在 time_until 键下的表单中的 DateTime 对象。
建议将不胜感激。谢谢!
【问题讨论】:
-
$form->get('time_until')->format('yyyy-MM-dd HH:mm');