请注意
尽管讨论模板继承将树枝,树枝和PHP之间的哲学是相同的模板。
这个模板定义了一个两列的基本HTML框架文档页面。在这个例子中,三人{%块%}
区域定义(标题
,侧边栏
和身体
)。每一块可以覆盖一个孩子模板或留下其默认实现。这个模板也可以直接呈现。在这种情况下,标题
,侧边栏
和身体
块将保留默认值中使用该模板。
一个孩子模板看起来像这样:
请注意
父模板存储在模板/
,所以它的路径base.html.twig
。模板命名约定是完全解释道<一个href=”//www.oldmanjams.com/doc/4.2/templating.html" class="reference internal">创建和使用模板一个>。
模板继承的关键{%延伸%}
标签。这告诉模板引擎首先评估基础模板,设置布局和定义了几个街区。子模板然后呈现,此时标题
和身体
父块取代了那些孩子。这取决于的价值blog_entries
,输出可能会看起来像这样:
注意,因为孩子没有定义一个模板侧边栏
块,价值从父模板使用。内的内容{%块%}
标签在一个父模板总是默认情况下使用。
提示
你可以用你想要尽可能多的水平的继承!看到<一个href=”//www.oldmanjams.com/doc/4.2/templating/inheritance.html" class="reference internal">如何组织你的树枝模板使用继承一个>更多信息。
使用模板继承时,这里有一些建议要牢记:
<李>如果你使用{%延伸%}
在一个模板,它必须第一标签模板;李><李>越{%块%}
标签你基础模板,越好。记住,子模板不需要定义所有父块,所以创建你想要尽可能多的块在你的基地的模板,给每一个合理的默认值。越块基础模板,更灵活的布局将;李><李>如果你发现自己复制内容的模板,它可能意味着你应该移动内容{%块%}
在父模板。在某些情况下,一个更好的解决方案可能会搬到一个新的模板和内容包括
它(见<一个href=”//www.oldmanjams.com/doc/4.2/templating.html" class="reference internal">创建和使用模板一个>);< /李><李>如果你需要从父母得到一块的内容模板,您可以使用{{父()}}
函数。这是有用的,如果你想增加一个父块的内容而不是完全覆盖:
注意,模板名称遵循相同的典型的公约。的article_details.html.twig
模板使用一个文章
变量,我们传递给它。在这种情况下,你可以完全避免这样做,因为所有的变量中可用list.html.twig
也可以在article_details.html.twig
(除非你设置<一个href=”https://twig.www.oldmanjams.com/doc/2.x/functions/include.html" class="reference external">with_context一个>为false)。
提示
的{“条”:文章}
语法是散列映射的标准枝的语法与命名键(即数组)。如果你需要通过多个元素,它看起来像这样:{“foo”: foo,“酒吧”:酒吧}
。
正如所料,这将生成的URL/
。现在,一个更复杂的路线:
在这种情况下,您需要指定的路线名称(article_show
)和一个值{蛞蝓}
参数。使用这条路线,重新审视recent_list.html.twig
模板前一节的链接到正确的文章:
提示
你也可以通过生成一个绝对URLurl ()
嫩枝功能:
您现在可以使用资产()
功能:
的资产()
函数的主要目的是让应用程序更便携。如果您的应用程序的生活在您的主机(如的根源。http://example.com
),那么应该呈现的路径/图片/ logo.png
。但是如果您的应用程序(如住在子目录中。http://example.com/my_app
),每个资产路径应该呈现的子目录(例如/ my_app /图片/ logo.png
)。的资产()
函数负责这个通过确定您的应用程序是如何被使用和生成相应的正确路径。
提示
的资产()
函数支持各种缓存通过破坏技术<一个href=”//www.oldmanjams.com/doc/4.2/reference/configuration/framework.html" class="reference internal">版本一个>,<一个href=”//www.oldmanjams.com/doc/4.2/reference/configuration/framework.html" class="reference internal">version_format一个>,<一个href=”//www.oldmanjams.com/doc/4.2/reference/configuration/framework.html" class="reference internal">json_manifest_path一个>配置选项。
如果你需要绝对url的资产,使用absolute_url ()
树枝函数如下:
开始通过添加两个街区基础模板,将你的资产:一个叫样式表
在头
标签,另一个叫javascript
略高于关闭身体
标签。这些块的样式表和javascript将包含所有你需要在你的网站:
这看起来几乎像常规的HTML,但附加的{%块%}
。这些都是有用的,当你需要包括一个额外的样式表从一个孩子模板或JavaScript。例如,假设您有一个页面,您需要包括一个联系contact.css
样式表只是在这个页面。在联系页面的模板,做以下:
在孩子模板,你覆盖样式表
块,把你的新样式表标签内的块。既然你想添加到父块的内容(而不是实际取代),您还可以使用父()
包括从树枝函数样式表
模板块的基地。
你还可以包括资产位于你的包资源/公共/
文件夹中。您将需要运行php资产:bin /控制台安装目标(——符号链接)
命令,该命令(或符号链接)文件复制到正确的位置。(默认情况下,目标是公共/
您的应用程序的目录)。
最终的结果是一个页面,其中包括main.js
和两个main.css
和contact.css
样式表。
更多细节,请参阅<一个href=”//www.oldmanjams.com/doc/4.2/templating/escaping.html" class="reference internal">如何逃离输出模板一个>。
这项工作,包括代码示例,许可下<一个rel=”李cense" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons冲锋队3.0一个>许可证。
一个rticle>