将日期类型从表单传递到Symfony2中的存储库

时间:2014-06-06 10:44:53

标签: symfony

我在Symfony2中遇到问题,将日期字段类型从表单传递到getRepository()函数。假设我的tanggal字段的日期类型为:

$builder->add('tanggal', 'date')

然后在处理我的请求的控制器中:

$form->handleRequest($request);
$tanggal = $form->get('tanggal');

我想将这个$ tanggal字段用于getRepository()

中的条件
$entity = $em->getRepository('SifoAdminBundle:Attendance')->findOneBy(array('date' => $tanggal));

我得到这样的错误:

  哎呀,好像出了什么问题。 1/1 UndefinedMethodException:   试图在课堂上调用方法“格式”   “Symfony \ Component \ Form \ Form”in   C:\ Sifony \供应商\原则\ DBAL \ LIB \原则\ DBAL \类型\ DateType.php   第53行。

in C:\Sifony\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateType.php
     

第53行

如果我做手册就这样:

$tanggal = new \DateTime($request->request->get('form')['tanggal']);

这个代码工作正常,但我觉得这不是正确和不好的做法。我认为getRepository() handleRequest()

存在问题日期类型

我试着调查C:\Sifony\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateType.php,似乎问题是使用日期类型或日期时间类型的数据库字段(学说),getRepository()类需要DateTime类型才能正常工作。

/**
 * {@inheritdoc}
 */
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
    return ($value !== null)
        ? $value->format($platform->getDateFormatString()) : null;
}

有没有办法将日期类型从我的表单转换为DateTime或更好的主意?

1 个答案:

答案 0 :(得分:1)

问题是你得到了Symfony \ Component \ Form \ Form类的对象。

尝试

$data = $form->getData();

并从该变量访问日期数据。