Symfonyob娱乐下载 3.4新增功能:改进了模板的覆盖
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
在Syob娱乐下载mfony 3.4中弃用的包继承在Symfonob娱乐下载y 4.0中,我们不再建议在您自己的代码中使用包,但是覆盖来自第三方包的模板仍然是一个常见的需求。这就是为什么在Symfonyob娱乐下载 3.4中,我们改进了模板的重写,为Symfony 4做准备。
新的覆盖目录
在Syob娱乐下载mfony 2和3应用程序中,第三方包模板在应用程序/资源/ < BundleName > /视图/
目录中。在Syob娱乐下载mfony 4中,这个目录将被移动到src /
,这看起来不太适合存储模板,因为我们有模板/
目录在项目根目录。
因此,在Symfony 3.ob娱乐下载4中,我们创建了一个新目录来覆盖包模板:模板/包/ < BundleName > /
.例如,如果你想定制错误页面在Symfob娱乐下载ony应用程序中:
1 2 3 4 5 6 7
Symob娱乐下载fony 3.3 #}{# app /资源/ / error404.html TwigBundle /视图/异常。树枝#}页面未找到!Symob娱乐下载fony 3.4 #}{# / error404.html模板/包/ TwigBundle /异常。树枝#}页面未找到!
覆盖和扩展模板
有时,您希望覆盖第三方包模板,但重用其中的大部分内容,以避免代码重复。方法的覆盖和扩展layout.html.twig
模板来自FOSUserBundle:
1 2 3
{#模板/包/ FOSUserBundle / layout.html。树枝#}{%扩展' @FOSUser / layout.html。嫩枝' %}{#……这行不通……#}
如果您尝试这个例子,您将看到“达到嵌套水平”错误,因为同时重写和扩展类似于无限循环。在Syob娱乐下载mfony 3.4中,我们解决了这个问题,为每个bundle创建了一个新的独占的Twig名称空间。
新的名称空间与以前相同,但有所增加!
在bundle名称之前。在这种情况下,@FOSUser
指的是正常的Twig命名空间,它可以包括第三方模板和您自己的覆盖模板和@ !FOSUser
专有地引用第三方包定义的模板(无论它们是否被覆盖,您总是获得原始模板)。
使用这个新的命名空间,解决前面的问题很简单:
1 2 3
{#模板/包/ FOSUserBundle / layout.html。树枝#}{%扩展“@ ! FOSUser / layout.html。嫩枝' %}{#……这是预期的…#}
更好的调试:树枝
命令
最后,为了使这些更改更容易调试,使用调试:树枝
命令现在显示Twig名称空间的完整列表及其相关的文件路径,其优先级顺序与Symfony使用的相同。ob娱乐下载
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Alex Rock is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now这些特性将允许以一种更好的方式重写许多包!定义标准块从来没有变得如此容易:)