symfony2 и выдает ошибку исключения

Я пытаюсь генерировать исключения и делаю следующее:

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 не найдено и т. д.

Это лучший способ генерировать исключения?


person jini    schedule 16.05.2012    source источник
comment
Нормально бросать их в качестве первого примера, throw new Exception('Message'); До тех пор, пока вы импортируете класс исключения, как вы, кажется, сделали с оператором использования, он должен работать. Возможно, что-то еще, что вы не показываете - можете ли вы опубликовать свои фактические заголовки классов и трассировку стека исключений?   -  person PorridgeBear    schedule 17.05.2012
comment
ошибка, которую я получаю: Неустранимая ошибка: класс «Rest\UserBundle\Controller\HttpNotFoundException» не найден в /Users/jinni/Sites/symfony.com/src/Rest/UserBundle/Controller/DefaultController.php   -  person jini    schedule 17.05.2012
comment
Я включил использование Symfony\Component\HttpKernel\Exception вверху   -  person jini    schedule 17.05.2012


Ответы (3)


Пытаться:

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

и

throw new NotFoundHttpException("Page not found");

Я думаю, что вы немного ошиблись :-)

person Chris McKinnel    schedule 16.05.2012
comment
Не отправляет статус 404 - person Volatil3; 02.10.2016

Если он находится в контроллере, вы можете сделать это следующим образом:

throw $this->createNotFoundException('Unable to find entity.');
person Chopchop    schedule 13.07.2012

В контроллере вы можете просто сделать:

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');

or

use Symfony\Component\Security\Core\Exception\AccessDeniedException;

// ...

// Permissions were denied
throw new AccessDeniedException("You don't have access to this page!");
person Nuno Pereira    schedule 29.01.2016