我需要知道通过表单处理日期时间的常用方法。
我的实体中有一个属性,如
/**
* @var \DateTime
*
* @ORM\Column(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()) {
...
问题是,验证总是失败:此值无效。 我想是一个datetime对象,但是客户端只提供一个字符串。
该工作流程应如何运作?请帮助我:)
答案 0 :(得分:1)
@Benjamin Lazarecki
是对的。
您需要将字符串数据(从表单中提交)转换为DateTime
对象。但是,这个变压器已经在这里实现了:
所以,你可以直接插上'n'播放它;)