从实体symfony检索空数据时,在404响应中指定实体

时间:2017-06-25 20:12:47

标签: symfony

我实现了一个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."

2 个答案:

答案 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);