2012-05-18 4 views
9

Я хочу работать на странице 404 из среды dev. Я настроить 404 с помощью этого файла: приложения/Ресурсы/TwigBundle/Views/Exception/error.html.twigSymfony2 дисплей 404 страница ошибки в dev

Это прод URL работает корректно: mysite.com/404

Но это один mysite.com/app_dev.php/404 бросить NotFoundHttpException и дать мне dev debug page.

Возможно ли отобразить страницу с ошибкой вместо страницы отладки?

UPDATE:

Официальная документация, как теперь глава о том, что: Testing Error Pages during Development

+0

Override 'приложение/Ресурсы/TwigBundle/views/Exception/exception.html.twig' также? – meze

ответ

10

As of Symfony2.6 в Dev среде, вы можете использовать следующий маршрут:

/_error/404.html 

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

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

Вы должны переопределить шаблон exception_full.html.twig на развитие.

app/Resources/TwigBundle/views/Exception/exception_full.html.twig 

Symfony2 использует этот шаблон, чтобы предоставить вам как можно больше отладочной информации во время разработки.

Когда ядро ​​находится в режиме отладки, Symfony2 будет использовать exception_full.html.twig, иначе он будет использовать определенные шаблоны, которые вы переопределите.

Подробнее см. Продавец/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php, в частности функции showAction() и findTemplate().

+0

Это сделало мой день. Спасибо, Крис. –

+0

Кажется, в Symfony 2.1, путь: 'vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php' – arminrosu

+2

Мне пришлось« кэшировать: очистить », чтобы исключить« exception_full.html.twig » (SF2.1) –

17

Для отображения страниц ошибок, в сети/app_dev.php изменить второй параметр для false

$kernel = new AppKernel('dev', false); 

После проверки того, что вам нужно, изменить его обратно.


UPDATE

Спасибо @ user2019515 за указание, что из - теперь (2.3 и выше) есть ссылка на WebfactoryExeptionsBundle в Symfony docs и метод, который я писал выше, не должны быть использованы.

+0

Это, безусловно, путь, если вы хотите протестировать свои страницы ошибок в dev env, так как они будут в prod. – ftassi

+1

Согласно документам, вы не должны этого делать: http://symfony.com/doc/current/cookbook/controller/error_pages.html – user2019515

+0

Спасибо, что указали это, @ user2019515. Хотя, я не могу вспомнить сейчас точно, но когда я написал этот ответ, в документах о WebfactoryExceptionsBundle не было - оно появилось с документацией 2.3. – CRONUS

0

Также вы можете добавить маршруты к вашему routing_dev.yml файла

error404: 
    path: /404 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error404.html.twig 

error500: 
    path: /500 
    defaults: 
     _controller: FrameworkBundle:Template:template 
     template: TwigBundle:Exception:error500.html.twig 
Смежные вопросы