我在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或更好的主意?
答案 0 :(得分:1)
问题是你得到了Symfony \ Component \ Form \ Form类的对象。
尝试
$data = $form->getData();
并从该变量访问日期数据。