Symfony - 无法在 Action 中抛出我的 createNotFoundException

Symfony - Can't thow my createNotFoundException in Action

我已经创建了实体产品,当我想使用函数 getProductdeleteProduct 并且数据库中不存在该产品时,我无法抛出异常。

我的代码:

/**
 * @Route("/product/{product}", name="get_product", methods={"GET"})
 */
public function getProduct(Product $product)
{
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }

    return JsonResponse::create(['id' => $product->getId(), "name" => $product->getName(), "price" => $product->getPrice(), "description" => $product->getDescription()]);
}

/**
 * @Route("/product/{product}", name="delete_product", methods={"DELETE"})
 */
public function deleteProduct(Product $product)
{
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }

    $this->em->remove($product);
    $this->em->flush();

    return JsonResponse::create('deleted');
}

类型提示已经需要一个 Product 对象。

public function deleteProduct(Product $product)
{
    // $product is never null
    dump($product->getName());

上面的代码和下面的一样

public function deleteProduct($productId)
{
    $product = $this->getDoctrine()->getRepository(Product::class)
        ->find($productId);
    // $product could be null
    if(!$product){
        throw $this->createNotFoundException('Product not found');
    }
    // $product is never null
    dump($product->getName());

因为 Symfony paramTransformer 在对象不匹配时抛出 NotFoundException。有关更多详细信息,请参阅文档