如何覆盖模板从第三方包
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何覆盖模板从第三方包
Symfob娱乐下载ony社会引以为欧宝体育平台怎么样傲的创建和维护高质量的包(见KnpBundles.com为大量不同特性。一旦你使用第三方包,你可能会需要覆盖和定制一个或更多的模板。
假设您已经安装了虚构的开源AcmeBlogBundle在您的项目。当你真的满意一切,你想要覆盖的博客“列表”页面定制标记专门为您的应用程序。通过挖掘博客
控制器的AcmeBlogBundle,你会发现以下几点:
1 2 3 4 5 6 7 8 9 10
公共函数indexAction(){/ /一些逻辑检索博客美元博客=……;美元这- >呈现(“@AcmeBlog /博客/ index.html.twig”,数组(“博客”= >美元博客));}
当@AcmeBlog /博客/ index.html.twig
呈现,Symfony实际上ob娱乐下载看起来在两个不同位置的模板:
app /资源/ AcmeBlogBundle /视图/博客/ index.html.twig
src / Acme / BlogBundle /资源/视图/博客/ index.html.twig
覆盖包模板,只是复制index.html.twig
模板从包app /资源/ AcmeBlogBundle /视图/博客/ index.html.twig
(应用程序/资源/ AcmeBlogBundle
目录不存在,所以你需要创建它)。你现在可以自由定制模板。
谨慎
如果你在一个新的位置添加一个模板,你可能需要明确你的缓存(php应用程序/控制台缓存:清楚
),即使你在调试模式下。
这个逻辑也适用于基础包模板。还假设每个模板AcmeBlogBundle继承自一个基础模板中调用@AcmeBlog / layout.html.twig
。正如之前,Symfony会在以下ob娱乐下载两个地方的模板:
应用程序/资源/ AcmeBlogBundle /视图/ layout.html.twig
src / Acme / BlogBundle /资源/视图/ layout.html.twig
再一次覆盖模板,复制它的包应用程序/资源/ AcmeBlogBundle /视图/ layout.html.twig
。你现在可以自由定制这个副本。
如果你后退一步,你会发现Symfony总是看开始的ob娱乐下载app /资源/ {BUNDLE_NAME} /视图/
目录模板。如果模板不存在,继续通过检查在资源/观点
包本身的目录。这意味着所有包模板可以被放置在正确的app /资源
子目录。
请注意
你也可以从内部覆盖模板包通过包继承。有关更多信息,请参见如何使用包继承覆盖的部分包吗。
重写核心模板
因为Symfony框ob娱乐下载架本身只是一个包,可以覆盖核心模板以同样的方式。例如,核心TwigBundle包含许多不同的“异常”和“错误”模板,可以被复制的每个资源/视图/例外
目录的TwigBundle,你猜对了,app /资源/ TwigBundle /视图/例外
目录中。