如何从第三方包覆盖模板
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何从第三方包覆盖模板
Symfob娱乐下载ony社区以创建欧宝体育平台怎么样和维护高质量的包而自豪KnpBundles.com)提供大量不同的功能。一旦您使用了第三方包,您可能需要覆盖和自定义它的一个或多个模板。
假设您在项目中安装了一个假想的开源AcmeBlogBundle。虽然您对所有内容都非常满意,但您希望重写博客列表页面的模板。在包中,您要重写的模板位于资源/视图/博客/ index.html.twig
.
要重写包模板,只需复制index.html.twig
模板从捆绑到app /资源/ AcmeBlogBundle /视图/博客/ index.html.twig
(应用程序/资源/ AcmeBlogBundle
目录将不存在,因此您需要创建它)。现在可以自由地定制模板了。
您可能只想覆盖一个或多个块,而不是覆盖整个模板。但是,由于您正在重写希望从中扩展的模板,因此将会出现一个无限循环错误。解决办法是使用特殊的!
模板名中的前缀告诉Symfony你想从原始模板扩展,而不是从被覆盖的模板ob娱乐下载:
1 2 3 4 5 6 7
{# app /资源/ AcmeBlogBundle /视图/博客/ index . html。树枝#}{#特别版'!'前缀可以避免从被覆盖的模板扩展时出现错误#}{%扩展“@ ! AcmeBlog / index . html。树枝“%}{%块some_block %}...{%endblock%}
3.4
特殊的!
模板前缀是在Symfony 3.4中引入的。ob娱乐下载
谨慎
如果在新位置添加模板,则需要五月需要清除你的高速缓存(PHP bin/控制台缓存:清除
),即使您处于调试模式。
这个逻辑也适用于任何存在于包中的模板:只需遵循约定:应用程序/资源/ {BUNDLE_NAME} /视图/{路径/ / TEMPLATE.html.twig}
.
请注意
您还可以使用包继承来覆盖包内的模板。有关更多信息,请参见如何使用包继承覆盖一个包的部分.
覆盖核心模板
由于Symfony框ob娱乐下载架本身只是一个包,所以可以以同样的方式覆盖核心模板。例如,核心TwigBundle包含许多不同的“异常”和“错误”模板,可以通过从资源/视图/例外
目录的TwigBundle到,你猜对了app /资源/ TwigBundle /视图/例外
目录中。