【问题标题】:How to override errors templates for Symfony如何覆盖 Symfony 的错误模板
【发布时间】:2018-10-05 14:13:08
【问题描述】:

我想覆盖 Symfony 3 中的错误模板。我首先创建了一个带有个性化树枝的 TwigBundle 文件夹。

app/
 └─ Resources/
    └─ TwigBundle/
      └─ Exception/
        ├─ error404.html.twig
        ├─ error403.html.twig
        ├─ error.html.twig   

然后我检查了包含以下行的routing_dev 文件:

_errors:
resource: "@TwigBundle/Resources/config/routing/errors.xml"
prefix:   /_error

Symfony 仍然显示默认的错误模板。我想知道我是否应该验证其他内容。

PS : 我已经检查了这个文档:How to Customize Error Pages

编辑

【问题讨论】:

  • 你清除缓存了吗?
  • 可能只是您的问题中的拼写错误,但您的“Resources”文件夹有 2 个...“Ressources/”
  • @naththedeveloper 这是问题中的拼写错误,但文件夹已经存在并命名为“Resources”
  • 请注意,那些被覆盖的错误模板不会显示在dev 环境中。如果你想测试你需要访问的模板/_error/<error-code>.html(即localhost:8000/_error/404.html与集成的网络服务器)
  • 正确。但正确的链接是 localhost:8000/_error/404.html _error 而不是 _errors

标签: php symfony twig symfony-3.2


【解决方案1】:

被覆盖的文件应位于名为views 的子文件夹中。正确的文件树应该是这样的:

app/
 └─ Resources/
    └─ TwigBundle/
        └─ views/
            └─ Exception/
                ├─ error404.html.twig
                ├─ error403.html.twig
                ├─ error.html.twig  

之后清除缓存。

请注意,那些被覆盖的错误模板确实不会显示在dev 环境中。

如果您想在dev 环境中测试模板,您必须确保已在routing_dev.yml 中导入以下内容:

_errors:
    resource: "@TwigBundle/Resources/config/routing/errors.xml"
    prefix:   /_error

现在您可以访问/_error/<error-code>.html(即使用集成网络服务器的localhost:8000/_error/404.html

【讨论】:

  • 视图确实位于 TwigBundle 目录中吗?
  • 你是对的。它必须是相反的。仍然缺少views 文件夹似乎是这里的问题。编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
相关资源
最近更新 更多