Как показать настроенную страницу ошибки 404 - Symfony2

У меня это в контроллере:

if(some stuff) {
    throw $this->createNotFoundException('message');
}

Когда я тестирую его в dev env, я получаю страницу Symfony, сообщающую Exception, обнаруженную с моим текстом, но я не могу ее протестировать в prod env:( Я запускаю этот php app/console cache:clear --env=prod --no-debug, а затем заменяю только URL app_dev.php с app.php, но панель инструментов и страница с ошибкой Symfony остаются.

Я создал этот файл - app/Resources/TwigBundle/views/Exception/error.html.twig. Так будет ли это отображаться в prod?

Это в нем:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>An Error Occurred: {{ status_text }}</title>
</head>
<body>
    <h1>Oops! An Error Occurred</h1>
    <h2>The server returned a "{{ status_code }} {{ status_text }}".</h2>
</body>
</html>

где я должен давать значения для status_code и status _text? Или они взяты из исключения?

Итак, в общем, что я хочу сделать, когда условие в действии моего contoller истинно, моя настроенная страница ошибки будет показана в prod env. Я сделал это уже, а если нет, как это сделать и как увидеть результат в prod env?

Ответ 1

Я также попытался, и я заметил, что пользовательские страницы ошибок, размещенные в app/Resources/TwigBundle/views/Exception/error.html.twig, работали только в среде prod.

Ответ 2

Лучше поздно, чем никогда, я думаю..

Вероятно, вы знаете об переопределении шаблонов. Вы можете переопределить любой желаемый шаблон. Поэтому, если вы хотите переопределить страницу ошибки dev, просто для отладки, вы должны переопределить шаблон:

exception_full.html.twig

Вы можете сделать это, создав такой файл в этой папке:

app/Resources/TwigBundle/views/Exception

Теперь вы увидите свой настроенный 404 в режиме dev.

Ответ 3

вы можете получить доступ к вашему обнаруженному тексту следующим образом:

{{ exception.message }}

Ответ 5

Похоже, Symfony предлагает новый способ просмотра шаблонов страниц ошибок в вашей среде разработки. Из их документов:

Пока вы находитесь в среде разработки, Symfony показывает большую страницу исключений, а не новую блестящую новую страницу с ошибками. Итак, как вы можете видеть, как это выглядит и отлаживать его?

К счастью, по умолчанию ExceptionController позволяет вам просматривать страницы ошибок во время разработки.

Чтобы использовать эту функцию, вам необходимо определить определение в файле routing_dev.yml следующим образом:

# app/config/routing_dev.yml
_errors:
    resource: "@TwigBundle/Resources/config/routing/errors.xml"
    prefix:   /_error

Подробнее: Справочное руководство по ошибкам Symfony