【问题标题】:Passing Date Type from form into Repository in Symfony2将日期类型从表单传递到 Symfony2 中的存储库
【发布时间】: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


    【解决方案1】:

    问题是你获取 Symfony\Component\Form\Form 类的对象。

    尝试

    $data = $form->getData();
    

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

    【讨论】:

    • 我不敢相信。我想我以前做过。这就像魔术$tanggal = $form->get('tanggal')->getData(); 我已经为此奋斗了将近 2 个小时,也许我真的很累想弄清楚这一点。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2011-07-20
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多