Я пытаюсь бросить исключения, и я делаю следующее:
use Symfony\Component\HttpKernel\Exception\HttpNotFoundException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
Я использую их следующим образом:
throw new HttpNotFoundException("Page not found"); throw $this->createNotFoundException('The product does not exist');
однако я получаю ошибки, такие как HttpNotFoundException не найден и т. д.
Это лучший способ бросить исключения?
Пытаться:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
а также
throw new NotFoundHttpException("Page not found");
Я думаю, вы немного отступили 🙂
в любом контроллере вы можете использовать это для 404 HTTP-ответа внутри Symfony
throw $this->createNotFoundException('Sorry not existing');
такой же как
throw new NotFoundHttpException('Sorry not existing!');
или это для 500 HTTP-кода ответа
throw $this->createException('Something went wrong');
такой же как
throw new \Exception('Something went wrong!');
или
//in your controller $response = new Response(); $response->setStatusCode(500); return $response;
или это для любого типа ошибок
throw new Symfony\Component\HttpKernel\Exception\HttpException(500, "Some description");
Также … Для Custom Exception вы можете передать этот URL
Если его в контроллере вы можете сделать так:
throw $this->createNotFoundException('Unable to find entity.');
В контроллере вы можете просто сделать:
public function someAction() { // ... // Tested, and the user does not have permissions throw $this->createAccessDeniedException("You don't have access to this page!"); // or tested and didn't found the product throw $this->createNotFoundException('The product does not exist'); // ... }
В этой ситуации нет необходимости включать use Symfony\Component\HttpKernel\Exception\HttpNotFoundException;
на вершине. Причина этого заключается в том, что вы не используете этот класс напрямую, как с помощью конструктора.
Вне контроллера вы должны указать, где находится класс, и выдавать исключение, как обычно. Как это:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; // ... // Something is missing throw new HttpNotFoundException('The product does not exist');
или
use Symfony\Component\Security\Core\Exception\AccessDeniedException; // ... // Permissions were denied throw new AccessDeniedException("You don't have access to this page!");