当我覆盖404错误页面时,app.request.attributes.get('_ route')为空

时间:2014-05-26 19:42:06

标签: php symfony twig

我试图自定义404错误页面,所以我做了:

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

2)我在" layout.html.twig"中更改了{%if app.user和is_granted(' ...')%}的is_granted(),用于" error404.html.twig"

3)php app / console cache:clear --env = prod --no-debug

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

我检查了我的" prod.log"文件,我看到一个NotFoundHttpException和这个Twig错误:

request.ERROR:处理异常时抛出异常 (Twig_Error_Runtime:渲染期​​间抛出了异常 模板("无法生成指定路线的URL"" as 这样的路线不存在。")" :: layout.html.twig"在第33行。)[] []

看来路径(app.request.attributes.get(' _route'))会返回一个空值。

- >如何获取当前路径并使错误页面正常工作?< -

由于

1 个答案:

答案 0 :(得分:0)

正如Maerlyn在他的comment中所说,如果你在404页面上,那么很可能没有匹配的路线。

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

{{ app.request.uri }}

将返回用户尝试访问的网页的完整网址。和

{{ app.request.pathInfo }}

将返回路径(以斜杠开头)。

通过查看/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Request.php,您可以找到有关请求对象上可用方法的更多信息。