Symfony — не могу отбросить исключение createNotFoundException в действии

Я создал продукт сущности, и я не могу выдавать исключения, когда я хочу использовать функцию 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');
}

0

Решение

Тип намекает уже ожидаем 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, когда объект не соответствует. см. документ для более подробной информации

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]