2014-03-01 56 views
7

我想在Symfony中自定義錯誤頁面。Symfony2:自定義錯誤頁面擴展base.html.twig

這是我error.html.twig文件位於app/Resources/TwigBundle/views/Exception/

{% extends '::base.html.twig' %} 

{% block body %} 

<h1>{{ status_code }}: {{ status_text }}</h1> 

{% endblock %} 

不幸的是我得到了以下錯誤消息:

Fatal error: Uncaught exception 'Symfony\Component\Routing\Exception\ResourceNotFoundException' in [...] vendor\symfony\symfony\src\Symfony\Component\HttpKernel\EventListener\RouterListener.php on line 144

當我刪除{% extends '::base.html.twig' %}一切工作正常。任何想法如何讓我的基本模板包含在錯誤頁面中?

編輯1: 奇怪的是,它似乎當403拋出的工作,例如,當我訪問/user但不具備必要的特權。

編輯2: 我貼我的base.html.twig全部內容到error.html.twig文件,發現該錯誤是由於由KnpMenuBundle束呈現的菜單造成的:

{{ knp_menu_render('ACMEMemberBundle:Builder:mainMenu', { 'style': 'pills', 'currentClass': 'active' }) }} 

當我刪除此行,一切正常。但這不是我想去的方式。有沒有可能保持導航?

+1

http://stackoverflow.com/questions刪除::/12634961/how-to-show-customized-404-error-page-symfony2 –

+1

@阿比亞感謝您的評論。如果您指的是生產環境,我實際上是在生產模式下運行我的應用程序。 – user3367658

+0

我有類似的問題。那裏的問題是在當前請求的路由中使用'path'。 404錯誤沒有路由。 –

回答

0

你把頁面放在下面的地方嗎?

/app/ResourceS/TwigBundle/views/Exception/error404.html.twig

{% extends '::base.html.twig' %} 
{% block content %} 
{%trans%}errors.404{%endtrans%} 
{% endblock %} 
0
// app/Resouces/views/base.html.twig 

× 
{% include('path/to/include') %} 

○ 
{% include('::path/to/include') %} 
0

我終於做到了把整個代碼(基地+電流)在相同的「錯誤。 html.twig'文件。

它爲我工作,避免了巨大的頭痛。

1

文件應位於app/Resources/views/Exception/

,而不是

app/Resources/TwigBundle/views/Exception/