2014-11-17 77 views
0

我想为404和500错误有不同的错误页面。我怎样才能做到这一点?404和500状态的自定义错误页面

我只在生产环境中工作。我重写了小枝错误模板,并将它们放在app/Resources/TwigBundle/views/Exception文件夹中。

我想创建两个文件有:

error404.html.twig 
exception_full.html.twig 

这样,如果是404,将打开的第一个文件,而在任何其他情况下,它会打开另外一个。

我有几个问题,但:

  • 的第一个文件从未打开的404错误......只有第二和symfny的默认,如果不存在
  • 我不能延长它({% extends '::layout.html.twig' %}),因为如果我使用它的模板只是不加载

任何建议吗?

谢谢!

+0

根据这个答案http://stackoverflow.com/a/12675355/4074148自定义错误页面只显示在prod环境。您是否在prod env中测试了解您是否看到自定义页面? – Veve

+0

正如我所说,我使用prod环境;) – khernik

+0

我的坏,对不起:P – Veve

回答

0

将您的exception_full.html.twig文件名更改为error.html.twig。它为我这样工作。我有几个error4xx文件,如果我没有定义特定的代码并发生异常,它将显示error.html.twig视图。

至于没有显示您的基础模板,您的基础模板的确切位置?如果您使用语法'::layout.html.twig',那么layout.html.twig必须位于app/Resources/views/layout.html.twig。如果是这种情况,那么你应该得到一个错误,解释为什么它不会加载。

查看docs了解更多信息。

+0

'layout.html.file'是在正确的位置,这就是为什么我认为这很奇怪。此外,自定义分枝函数会阻止异常处理。 – khernik

+0

哦,我明白了!它不处理异常,因为在布局模板中有'app.user.username'变量。为什么会发生? – khernik

+0

如果没有用户登录,使用'app.user.username'将始终引发异常。你应该有一个if语句,例如'{%if app.user%} app.user.username {%endif%}' – Sehael