我需要知道通过表单处理日期时间的通常方法。
我的实体中有一个属性,比如
/**
* @var DateTime
*
* @ORMColumn(name="founded", type="datetime", nullable=true)
*/
private $founded;
然后我通过FormTypes
呈现表单->add('founded', 'date', array('widget' => 'single_text', 'format' => 'dd.MM.yyyy'))
用户然后输入一个字符串,如01.01.1892然后通过ajax发送给服务器:
form_team[basicdata][founded]:01.01.1914
在控制器中,我处理数据并验证它:
$form = $this->createForm(new TeamsType(), $team);
$form->submit($this->getRequest()->request->get($form->getName()));
if ($form->isValid()) {
...
问题是,验证总是失败:This value is not valid。我猜一个datetime对象是预期的,但客户端只是提供了一个字符串。
这个工作流应该如何工作?
@Benjamin Lazarecki
是正确的
您需要将字符串数据(来自表单内)转换为DateTime
对象。但是,这个转换器已经在这里实现了:
所以,你可以直接输入'n'播放;)