【发布时间】:2014-06-06 10:44:53
【问题描述】:
我在将日期字段类型从表单传递到 Symfony2 中的 getRepository() 函数时遇到问题。假设我在表单中有 tanggal 字段,日期类型为:
$builder->add('tanggal', 'date')
然后在处理我的请求的控制器中:
$form->handleRequest($request);
$tanggal = $form->get('tanggal');
我想在getRepository() 中使用 $tanggal 字段作为条件:
$entity = $em->getRepository('SifoAdminBundle:Attendance')->findOneBy(array('date' => $tanggal));
我遇到了这样的错误:
哎呀,好像出了点问题。 1/1 未定义方法异常: 试图在类上调用方法“格式” “Symfony\Component\Form\Form”在 C:\Sifony\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\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 或任何更好的主意?
【问题讨论】:
标签: symfony