Php 覆盖404错误页时,app.request.attributes.get(';#u route';)为空

Php 覆盖404错误页时,app.request.attributes.get(';#u route';)为空,php,symfony,twig,Php,Symfony,Twig,我正在尝试自定义404错误页面,因此我做到了: 1) 创建app/Resources/TwigBundle/views/Exception/error404.html.twig 2) 我更改了{%if-app.user的is_-grated(),并且在“layout.html.twig”中被“error404.html.twig”使用的is_-grated(“…”)%} 3) php应用程序/控制台缓存:clear--env=prod--no debug 4) 在prod环境中访问http:/l

我正在尝试自定义404错误页面,因此我做到了:

1) 创建app/Resources/TwigBundle/views/Exception/error404.html.twig

2) 我更改了{%if-app.user的is_-grated(),并且在“layout.html.twig”中被“error404.html.twig”使用的is_-grated(“…”)%}

3) php应用程序/控制台缓存:clear--env=prod--no debug

4) 在prod环境中访问http:/localhost/app.php并导致404错误,得到的是一个空白页而不是我的自定义错误页

我检查了我的“prod.log”文件,发现NotFoundHttpException和此细枝错误:

request.ERROR:处理异常时引发异常 (Twig_Error_运行时:在渲染期间引发异常 模板的“无法为命名路由生成URL”为 第33行“::layout.html.twig”中的“)[]

路径(app.request.attributes.get(“U路由”)似乎返回空值

->如何获取当前路线并使错误页面正常工作?正如Maerlyn在他的文章中所说,如果你在404页面上,很可能没有匹配的路线

但是,您可以从请求对象检索有用的信息,这可能会在以下方面对您有所帮助:

{{ app.request.uri }}
将返回用户试图访问的页面的完整URL。及

{{ app.request.pathInfo }}
将返回路径(以斜线开始)


通过查看
/vendor/symfony/symfony/src/symfony/Component/HttpFoundation/request.php

您想在错误页面中对当前路由做什么?不是在我的错误页面中,而是在我的布局中,我的标题在哪里。这是为了确定我的标题的元素。其元素取决于当前路由。如果路由无效,是否确实需要可变标头元素?我建议(或多或少)为错误页面提供静态内容。当您在404页面上时,这(通常)意味着没有匹配的路由。您可能会在此处找到有助于测试页面的内容。