Ответ 1
Try:
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
и
throw new NotFoundHttpException("Page not found");
Я думаю, что вы получили это немного назад: -)
Я пытаюсь сделать исключения, и я делаю следующее:
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 не найдено и т.д.
Это лучший способ бросить исключения?
Try:
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!');
или это для HTTP-кода ответа 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");
Также... Для Пользовательского исключения вы можете передать этот 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!");