首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在boolean上调用成员函数format()?

在boolean上调用成员函数format()?
EN

Stack Overflow用户
提问于 2017-12-23 19:31:07
回答 2查看 3.1K关注 0票数 1

我有一个symfony 3项目。我正在尝试发布几条信息,其中包括两个日期。该方法如下所示:

代码语言:javascript
复制
    /**
 * @Route("/LegoPieces")
 * @METHOD("POST")
 * @View()
 *
 * @Annotations\QueryParam(
 * name="piece", nullable=false, description="piece"
 * )
 * @Annotations\QueryParam(
 * name="type", nullable=false, description="type"
 * )
 * @Annotations\QueryParam(
 * name="startDate", nullable=false, description="Start Date YYYY-MM-DD HH:MM:SS (Should be in the future)"
 * )
 * @Annotations\QueryParam(
 * name="endDate", nullable=false, description="End Date YYYY-MM-DD HH:MM:SS (Should be no more than 3 weeks in the future)"
 * )
 */
public function postAction(ParamFetcherInterface $paramFetcher)
{
    $piece = $paramFetcher->get('piece');
    $type = $paramFetcher->get('type');
    $start = $paramFetcher->get('startDate');
    $end   = $paramFetcher->get('endDate');
    $startDate = DateTime::createFromFormat(' Y-m-d H:i:s', $start);
    var_dump($startDate);
    $endDate = DateTime::createFromFormat(' Y-m-d H:i:s', $end);


    $em = $this->getDoctrine()->getManager('default');

    $data = new LegoPieces();
    $data->setPiece($piece);
    $data->setType($type);
    $data->setStartDate($startDate);
    $data->setEndDate($endDate);
    $em->persist($data);
    $em->flush();

    return new JsonResponse("LegoPieces Added Successfully", 200);
}

setters看起来像这样:

代码语言:javascript
复制
        /**
  * Set startDate
  *
  * @param \DateTime $startDate
  *
  * @return LegoPiece
  */
  public function setStartDate($startDate)
  {
   $this->startDate = $startDate;

   return $this;
  }

但是,每次我尝试发布数据时,我都会收到以下错误消息:

代码语言:javascript
复制
 "message": "Call to a member function format() on boolean",
            "class": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",

我什么都试过了,都不管用!感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2017-12-23 21:53:15

你应该检查你传入的日期。这个问题很可能是由于您使用

代码语言:javascript
复制
DateTime::createFromFormat()

正如文档所说:

返回一个新的DateTime实例,失败时返回FALSE。

因此,最有可能的情况是调用失败,返回false,然后(可能在您的模板中)您(或呈现日期时的Twig )调用$startDate$endDate上的format(),但其中一个实际上不是有效的DateTime对象。

我的假设是,由于初始的空格,' Y-m-d H:i:s'格式是不正确的?

票数 1
EN

Stack Overflow用户

发布于 2017-12-24 21:08:26

我认为问题的原因和@dbrumann说的一样。但是尝试使用$startDate = \DateTime::createFromFormat()方法创建日期。当函数无法从格式创建日期时,它将返回false,并且setter正在尝试将false设置到datetime对象中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47952113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档