Symfony2:DateTime和表单验证

时间:2014-05-06 13:33:14

标签: 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.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对象,但是客户端只提供一个字符串。

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

1 个答案:

答案 0 :(得分:1)

@Benjamin Lazarecki是对的。

您需要将字符串数据(从表单中提交)转换为DateTime对象。但是,这个变压器已经在这里实现了:

http://api.symfony.com/master/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToStringTransformer.html

所以,你可以直接插上'n'播放它;)