我实现了一个API,在返回404响应时遇到了一些问题。我希望当我提供的ID在数据库中存在时,要返回带有消息的404响应:
}
问题在于我不知道如何显示$实体,因为我使用entityManager从实体获取数据,但是当返回的数据为null时,我没有任何关于实体。我的404功能:
"The entity" . $entity " with id: " . $id . "not found. ".
和控制器函数,它检索数据并在数据为空时调用404函数:
public function response404Exception($entity, $id)
{
$response = new Response();
if (!$entity){
$response->setContent('Entity: '. " for id " . $id . "not found.");
$response->setStatusCode('404');
}
return $response;
}
$ sizes为null时如何显示初始消息?
public function getProductsAction($productId)
{
/**
* @var object $rooms
*/
$sizes = $this->getEntityManager()
->getRepository('ProductBundle:Product\Size')
->findBy(['product' => $productId]);
$response404 = $this->response404Exception($sizes, $productId);
return ($response404->getStatusCode() == 404) ? $response404 : $this->getSerializedEntityResponse($sizes) ;
}
而且,如果我在控制器中有一个函数taht在不使用参数访问的情况下检索数据,那么如何更改函数404以使消息404成为:
"The entity product with id [ ..] not found."
答案 0 :(得分:0)
你可以用这样的字符串传递它:
$response404 = $this->response404Exception('UBBBuildingBundle:Product\Size', $productId);
或者
$response404 = $this->response404Exception('Size', $productId);
另一种方法是像这样使用get_class
:
$response404 = $this->response404Exception(get_class($sizes), $productId);
答案 1 :(得分:0)
你可以计算$ size
返回(计数($ sizes)=== 0)? $ response404:$ this-> getSerializedEntityResponse($ sizes);