我有多个具有相同标记的部分,例如
<div class="A B C">
<h3 class"D">Section Title 1</h3>
Some HTML content...
<div>
<div class="A B C">
<h3 class"D">Section Title 2</h3>
Some different HTML content...
<div>
<div class="A B C">
<h3 class"D">Section Title 3</h3>
Some even different HTML content...
<div>
所以所有部分都共享一些结构 - 周围的容器(<div class="A B C">
)和标题元素(<h3 class="D">
) - 但也有独特的内容。
Twig中是否有一种机制以某种方式抽象节创建,以便 A,B,C,D 类仅在1个位置定义?
理想的解决方案是声明某种类似块的宏:
{% blockLikeMacro section(title) %}
<div class="A B C">
<h3 class"D">{{ title }}</h3>
{% content %}
<div>
{% endBlockLikeMacto %}
并使用它:
{% blockLikeMacroUse section("Section Title 1") %}
Some content..
{% endBlockLikeMacroUse %}
{% blockLikeMacroUse section("Section Title 2") %}
Some different content..
{% endBlockLikeMacroUse %}
{% blockLikeMacroUse section("Section Title 3") %}
Some event different content..
{% endBlockLikeMacroUse %}
使用Twig可以以任何方式实现这种效果(抽象部分结构)吗?
答案 0 :(得分:0)
在您的情况下,您可以使用循环来迭代您的部分:
{% for section in sections %}
<div class="A B C">
<h3 class"D">{{ section.title }}</h3>
{{ section.content }}
<div>
{% endfor %}
Twig也支持宏:https://twig.sensiolabs.org/doc/2.x/tags/macro.html