【发布时间】:2014-05-06 13:33:13
【问题描述】:
我需要知道通过表单处理日期时间的常用方法。
我的实体中有一个属性,例如
/**
* @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()) {
...
问题是,验证总是失败:这个值无效。 我猜一个日期时间对象是预期的,但客户端只是传递一个字符串。
该工作流程应该如何运作?请帮帮我:)
【问题讨论】:
-
我认为您应该使用 datatransformer 将客户端数据转换为日期时间。见symfony.com/doc/current/cookbook/form/data_transformers.html
-
我想这是一个日常问题。它是如何正常完成的?我认为应该已经有解决方案了...?
-
我需要知道验证需要什么才能得到她。我无法弄清楚客户应该发送什么。例如,它不可能发送 01.01.1893,我总是得到“这个值无效”。我不知道错误是在哪里抛出的,以及它期望得到什么不会抛出该错误....
标签: php validation symfony datetime