我有一个symfony 3项目。我想发布几条信息,包括两个日期。该方法如下所示:
/**
* @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);
}
安装者看起来像这样:
/**
* Set startDate
*
* @param \DateTime $startDate
*
* @return LegoPiece
*/
public function setStartDate($startDate)
{
$this->startDate = $startDate;
return $this;
}
但是,每次尝试发布数据时,都会收到以下错误消息:
"message": "Call to a member function format() on boolean",
"class": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
我已经尝试了一切,没有任何作品!感谢你的帮助!
答案 0 :(得分:1)
您应该检查传入的日期。问题很可能是您使用
DateTime::createFromFormat()
正如文件所说:
返回新的DateTime实例,或者失败时返回FALSE。
因此,很可能调用失败,返回false
以及稍后(可能在您的模板中)您(或呈现日期时的Twig)在format()
或{{$startDate
上调用$endDate
1}}但其中一个实际上不是一个有效的DateTime对象。
我的假设是格式' Y-m-d H:i:s'
由于最初的空格而不正确?
答案 1 :(得分:0)
我认为问题的原因与@dbrumann说的相同。但是尝试使用$ startDate = \ DateTime :: createFromFormat()方法创建日期。当函数无法从格式创建日期时,它将返回false,并且您的setter正在尝试将false设置为datetime对象。