2014-11-17 98 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