Symfony - 无法在 Action 中抛出我的 createNotFoundException
Symfony - Can't thow my createNotFoundException in Action
我已经创建了实体产品,当我想使用函数 getProduct
或 deleteProduct
并且数据库中不存在该产品时,我无法抛出异常。
我的代码:
/**
* @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。有关更多详细信息,请参阅文档
我已经创建了实体产品,当我想使用函数 getProduct
或 deleteProduct
并且数据库中不存在该产品时,我无法抛出异常。
我的代码:
/**
* @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。有关更多详细信息,请参阅文档