Symfony - Не могу отбросить мое исключение createNotFoundException в действии - PullRequest
0 голосов
/ 05 июля 2018

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

1 Ответ

0 голосов
/ 05 июля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...