Php Symfony2:日期时间和表单验证

Php Symfony2:日期时间和表单验证,php,validation,symfony,datetime,Php,Validation,Symfony,Datetime,我需要知道通过表单处理日期时间的常用方法是什么 我的实体中有一个属性,如 /** * @var \DateTime * * @ORM\Column(name="founded", type="datetime", nullable=true) */ private $founded; 然后我通过FormTypes呈现表单 ->add('founded', 'date', array('widget' => 'single_text', 'format' => 'dd.

我需要知道通过表单处理日期时间的常用方法是什么

我的实体中有一个属性,如

/**
 * @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对象,但客户端只传递一个字符串


该工作流应该如何工作?请帮助我:)

@Benjamin Lazarecki
是对的

您需要将字符串数据(从表单中提交)转换为
DateTime
对象。但是,该变压器已在此处实施:


因此,您可以直接插入并播放它;)

我认为应该使用datatransformer将客户机数据转换为datetime。看,我想这是一个日常问题。通常是怎么做的?我想应该已经有解决办法了?我需要知道她需要什么样的验证。我他妈搞不清楚客户应该送什么。发送01.01.1893是不可能的。例如,我总是得到“此值无效”。我不知道错误在哪里,也不知道不抛出该错误会得到什么……这是通常的方式吗?我不明白为什么我在使用表单组件时必须手动转换对象,它不应该自动处理并购买框架吗?我想在forminput中呈现实体的datetime属性并将其处理回服务器是一个常见的用例。我可以在formtype中配置'input'=>'datetime'参数,所以我想应该自动处理它。您必须使用transformer,因为您已经更改了小部件。