如何在Symfony2开发环境中显示404错误页面

时间:2012-05-18 11:00:17

标签: symfony development-environment

我想在开发环境中处理404页面。我使用此文件自定义404: app / Resources / TwigBundle / views / Exception / error.html.twig

此产品网址正常工作:mysite.com/404

但是这一个mysite.com/app_dev.php/404会抛出一个NotFoundHttpException并给我一个dev调试页面。

是否可以显示错误页面而不是调试页面?

更新

官方文档现在有一章关于:Testing Error Pages during Development

4 个答案:

答案 0 :(得分:19)

要显示错误页面,请在 web / app_dev.php 中将第二个参数更改为false

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

在测试完所需内容后,请将其更改回来。


<强>更新

感谢@ user2019515指出 - 现在(2.3及以上)WebfactoryExeptionsBundle中有Symfony docs的链接,我上面写的方法不应该使用。

答案 1 :(得分:13)

您需要在开发时覆盖exception_full.html.twig模板。

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

Symfony2使用此模板在开发过程中为您提供尽可能多的调试信息。

当内核处于调试模式时,Symfony2将使用exception_full.html.twig,否则它将使用您覆盖的特定模板。

请参阅vendor / symfony / src / Symfony / Bundle / TwigBundle / Controller / ExceptionController.php,特别是showAction()和findTemplate()函数以获取更多详细信息。

答案 2 :(得分:12)

在开发环境中

As of Symfony2.6,您可以使用以下路由:

/_error/404.html

其中404是要测试的错误代码,html是请求的格式。 为了能够使用此功能,请确保在routing_dev.yml文件中包含以下条目:

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

答案 3 :(得分: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