摘要周围的标记结构

时间:2017-06-06 13:12:13

标签: twig

问题

我有多个具有相同标记的部分,例如

<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可以以任何方式实现这种效果(抽象部分结构)吗?

1 个答案:

答案 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