13

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

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

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

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

更新:

官方文档现在有一个章节:Testing Error Pages during Development

4

4 回答 4

20

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

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

测试您需要的内容后,将其更改回来。


更新

感谢@user2019515 指出这一点 - 现在(2.3 及更高版本)在Symfony 文档中有一个指向WebfactoryExeptionsBundle的链接,我上面写的方法不应该被使用。

于 2013-07-30T06:34:45.567 回答
17

从开发环境中的 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
于 2015-03-23T15:13:39.463 回答
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() 函数以获取更多详细信息。

于 2012-05-18T16:23:34.570 回答
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
于 2015-09-17T15:03:31.903 回答