Ответ 1
Я также попытался, и я заметил, что пользовательские страницы ошибок, размещенные в app/Resources/TwigBundle/views/Exception/error.html.twig, работали только в среде prod.
У меня это в контроллере:
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?
Я также попытался, и я заметил, что пользовательские страницы ошибок, размещенные в app/Resources/TwigBundle/views/Exception/error.html.twig, работали только в среде prod.
Лучше поздно, чем никогда, я думаю..
Вероятно, вы знаете об переопределении шаблонов. Вы можете переопределить любой желаемый шаблон. Поэтому, если вы хотите переопределить страницу ошибки dev, просто для отладки, вы должны переопределить шаблон:
exception_full.html.twig
Вы можете сделать это, создав такой файл в этой папке:
app/Resources/TwigBundle/views/Exception
Теперь вы увидите свой настроенный 404 в режиме dev.
вы можете получить доступ к вашему обнаруженному тексту следующим образом:
{{ exception.message }}
Прочитайте документ http://symfony.com/doc/2.0/cookbook/controller/error_pages.html
и Настройка страницы 404 и других страниц ошибок
Похоже, Symfony предлагает новый способ просмотра шаблонов страниц ошибок в вашей среде разработки. Из их документов:
Пока вы находитесь в среде разработки, Symfony показывает большую страницу исключений, а не новую блестящую новую страницу с ошибками. Итак, как вы можете видеть, как это выглядит и отлаживать его?
К счастью, по умолчанию ExceptionController позволяет вам просматривать страницы ошибок во время разработки.
Чтобы использовать эту функцию, вам необходимо определить определение в файле routing_dev.yml следующим образом:
# app/config/routing_dev.yml
_errors:
resource: "@TwigBundle/Resources/config/routing/errors.xml"
prefix: /_error
Подробнее: Справочное руководство по ошибкам Symfony