当两者都在/ app目录中时扩展树枝模板

joh*_*ohn 1 php symfony twig

我正在尝试在symfony2中创建自定义错误页面,但是在error.html.twig中使用我的网站主题/布局时遇到了问题

如此处所述:http : //symfony.com/doc/current/cookbook/controller/error_pages.html

我已经改写了错误文件,并将自己的文件放入app/Resources/TwigBundle/views/Exception/error.html.twig。如果我使用静态内容,则一切正常,但我想像对{% extends '::base.html.twig' %}其他所有页面一样使用,因此可以复制当前的布局和样式。

base.html.twig位于app/Resources/views/base.html.twig。如何扩展此模板?

另外,出于好奇,是否有任何方法可以在我的一个捆绑软件中覆盖错误页面而无需特别制作“ TwigBundle”捆绑软件?

更新

好的,借助“ wouter J”解决了这个问题。事实证明,已找到文件,但正在扩展的文件正在使用is_granted。app.user and按照文档中的说明添加到if语句即可解决该问题。

Wou*_*r J 5

::base.html.twig语法是不是相对的。这意味着它将在任何地方都可以使用。

模板路径的完整语法为BundleName:DirName:FileName。故AcmeDemoBundle:Page:home.html.twig@AcmeDemoBundle/Resources/views/Page/home.html.twig

如果DirName未使用,例如AcmeDemoBundle::layout.html.twig,它将解析为@AcmeDemoBundle/Resources/views/layout.html.twig

如果BundleName未使用,则假定模板位于中app/Resources/views

因此::base.html.twig,仅指绝对路径app/Resources/views/base.html.twig(这不是绝对路径,因为我不知道app您所用目录的绝对路径,但是当Symfony执行此操作时它将是绝对路径)。

简而言之:您可以使用::base.html.twig