【问题标题】:Set DateTime in model from a TimeType input从 TimeType 输入在模型中设置 DateTime
【发布时间】:2018-07-27 15:13:05
【问题描述】:

我正在做一个 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 和 getTraceAsString 也崩溃了......

当我试图了解PHP check thrown exception type 是哪种异常时,$e->getCode 返回一个空字符串并且 get_class 或 getClass 崩溃。

你能告诉我我应该如何将我的 TimeType 转换为 DateTime,或者我怎样才能在这种输入中获取数据?

我在文档中搜索了https://symfony.com/doc/current/reference/forms/types/time.html

但他们只是说如何在表单中添加它,而不是在我们取回它时如何使用它

谢谢!

【问题讨论】:

  • 您已经使用input 选项为您的数据指定了正确的格式。也许错误出在其他地方?您返回的错误消息和堆栈跟踪到底是什么?
  • 我用ajax调用表单,我看不出是哪个错误,我试图用try and catch包围它崩溃的地方,但找不到异常:(
  • 我也尝试使用 getType 来观察表单输入是否发生变化,但它会回答我的对象,所以我想我得到了一件好事,但我知道为什么我崩溃了

标签: php symfony doctrine


【解决方案1】:

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

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

返回一个日期时间值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2016-12-08
    • 2014-09-02
    • 2021-01-25
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多