我正在尝试自定义Symfony中的错误页面。
这是我的error.html.twig
文件位于app/Resources/TwigBundle/views/Exception/
:
{% extends '::base.html.twig' %}
{% block body %}
<h1>{{ status_code }}: {{ status_text }}</h1>
{% endblock %}
不幸的是,我收到了以下错误消息:
致命错误:[.] vendor\symfony\src\Symfony\EventListener\RouterListener.php第144行中未捕获到异常“Symfony\Component\Routing\Exception\ResourceNotFoundException”
当我删除{% 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' }) }}
当我删除这条线时,一切正常。但这不是我想走的路。没有可能保留导航吗?
6条答案
按热度按时间6mzjoqzu1#
文件应位于
app/Resources/views/Exception/
中而不是
app/Resources/TwigBundle/views/Exception/
o4tp2gmn2#
你把这一页放在下面的地方了吗?
/app/ResourceS/TwigBundle/views/Exception/error404.html.twig
relj7zay3#
ws51t4hk4#
我终于把整个代码(base+current)放在同一个'error.html.twig'文件中了。
它为我工作,避免了巨大的头痛。
pxy2qtax5#
plz remove**::**in first line https://symfony.com/doc/current/templating.html
omqzjyyz6#
我看到这个问题没有一个公认的答案。但这个问题的答案是在评论下的原始职位由mark.sagikazar。
如果您的error404崩溃后,你把
进入你的error404.html.twig错误说:
那么问题就出在base.html.twig上。在我的例子中,
因为就像mark.sagikazar说的,404错误中没有路由,也没有其他错误消息。
所以我只是在这段代码周围放了一个if语句,像这样: