12

我的控制器中有这个:

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

当我在 dev env 中测试它时,我得到 Symfony 的页面,告诉我的文本检测到异常,但我无法在 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. 那么它会在产品中渲染吗?

这是在里面:

<!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_codeandstatus _text赋值?或者它们是从异常中获取的?

所以总的来说,我想要做的是当我的控制器操作中的条件为真时,我的自定义错误页面将显示在 prod env 中。我是否已经成功了,如果没有,如何制作以及如何在 prod env 中查看结果?

4

5 回答 5

16

我也尝试过,我注意到放置在 app/Resources/TwigBundle/views/Exception/error.html.twig 中的自定义错误页面仅在 prod 环境中有效。

于 2012-10-01T14:34:25.590 回答
14

我猜迟到总比没有好..

您可能知道覆盖模板。您可以覆盖任何您想要的模板。所以如果你想覆盖开发错误页面,只是为了调试,那么你应该覆盖模板:

exception_full.html.twig

您可以通过在此文件夹中创建这样的文件来做到这一点:

app/Resources/TwigBundle/views/Exception

现在您将在开发模式下看到您自定义的 404。

于 2013-05-31T12:37:00.033 回答
9

您可以通过以下方式访问检测到的文本:

{{ exception.message }}
于 2014-11-23T18:03:13.380 回答
5

阅读文档http://symfony.com/doc/2.0/cookbook/controller/error_pages.html

自定义 404 页面和其他错误页面

http://symfony.com/doc/2.0/cookbook/controller/error_pages.html#customizing-the-404-page-and-other-error-pages

于 2012-09-28T06:52:14.747 回答
3

看来 Symfony 有一种新方法可以让您在开发环境中查看错误页面模板。取自他们的文档:

当您在开发环境中时,Symfony 会显示大异常页面,而不是您闪亮的新定制错误页面。那么,您如何查看它的外观并对其进行调试呢?

幸运的是,默认的 ExceptionController 允许您在开发过程中预览错误页面。

要使用此功能,您需要在您的 routing_dev.yml 文件中有一个定义,如下所示:

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

阅读更多: Symfony 错误页面手册

于 2016-05-10T17:47:02.700 回答