我在控制器中有这个:
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
提供值?或者他们是从例外中获取的?
所以一般来说我想要做的是当我的控制器动作中的条件为真时,我的自定义错误页面将显示在prod env中。我是否已经制作,如果没有,如何制作以及如何在prod env中查看结果?
答案 0 :(得分:16)
我也尝试过,我注意到app / Resources / TwigBundle / views / Exception / error.html.twig中的自定义错误页面仅在prod环境中有效。
答案 1 :(得分:14)
迟到总比我想的要好......
您可能知道重写模板。 您可以覆盖所需的任何模板。 因此,如果您想覆盖开发错误页面,仅用于调试,那么您应该覆盖模板:
exception_full.html.twig
您可以通过在此文件夹中创建此类文件来执行此操作:
app/Resources/TwigBundle/views/Exception
现在,您将在开发模式下看到自定义的404。
答案 2 :(得分:8)
您可以通过以下方式访问检测到的文字:
{{ exception.message }}
答案 3 :(得分:5)
阅读文档http://symfony.com/doc/2.0/cookbook/controller/error_pages.html
和自定义404页面和其他错误页面
答案 4 :(得分:3)
看来Symfony有一种新的方式允许您在开发环境中查看错误页面模板。取自他们的文档:
当您处于开发环境中时,Symfony会显示大异常页面而不是您闪亮的新自定义错误页面。那么,你怎么看到它的样子并进行调试呢?
幸运的是,默认的ExceptionController允许您在开发期间预览错误页面。
要使用此功能,您需要在routing_dev.yml文件中有一个定义,如下所示:
# app/config/routing_dev.yml
_errors:
resource: "@TwigBundle/Resources/config/routing/errors.xml"
prefix: /_error