代码之家  ›  专栏  ›  技术社区  ›  Alexandre Corvino

从TimeType输入在模型中设置DateTime

  •  0
  • Alexandre Corvino  · 技术社区  · 7 年前

    我正在做一个symfony 4项目,我遇到了一个小问题

    我有一个DateTime值很少的模型,它代表了一家商店的时间表

    我想让管理员自己更改它,所以我做了一个表格,可以更改。

            $formBuilder->add($schedule->getDay().'_openAm', TimeType::class,
                array(
                    'label' => $this->getDayWithNumber($schedule->getDay()),
                    'input'  => 'datetime', 
                    'widget' => 'choice', 
                    'data' => $schedule->getSlotClosePM()
                )
            );
    

    但是当我想在模型中设置它时

      $schedule->setSlotOpenAM($form->get($scheduleDay."_openAm"));
    

    程序崩溃。。。

    所以我试着这么做

       $schedule->setSlotOpenAM(new \DateTime($form->get($scheduleDay."_openAm")));
    

    我还试图打印表单中的值,但它总是崩溃。。。

    我用一个try-and-catch(\ Exception$e)来包围我的所有这些,在这里我打印了一个小句子和$e->getMessage()但是getMessage和GetTraceAssString也会崩溃。。。

    e美元->getCode返回一个空字符串,当我试图了解它是哪种异常时,get\u类或getClass崩溃 PHP check thrown exception type .

    你能告诉我我应该如何将我的时间类型转换成日期时间吗?或者我如何才能获得这种输入中的数据?

    我查了文件 https://symfony.com/doc/current/reference/forms/types/time.html

    但他们只是说如何将其添加到表单中,而不是在我们得到它时如何使用它

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alexandre Corvino    7 年前

    最终,解决方案真的很简单:D!

        $schedule->setSlotOpenAM($form->get($scheduleDay."_openAm")->getData());
    

    返回dateTime值