Twig 围绕标记结构的抽象 问题

Twig 围绕标记结构的抽象 问题,twig,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 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>
问题:
这样的效果(抽象节结构)在任何情况下都可以使用Twig吗?

在您的情况下,您可以使用循环在节上进行迭代:

{% for section in sections %}
    <div class="A B C">
        <h3 class"D">{{ section.title }}</h3>
        {{ section.content }}
    <div>
{% endfor %}
{%用于节中的节%}
{{section.title}}
{{section.content}}
{%endfor%}

Twig也支持宏:

您可以使用
包含
或水平重用
使用
@DarkBee如何使用
?通过定义两个宏:
macro-sectionStart
macro-sectionEnd
?@DarkBee还如何使用“参数化”
include
每次给我不同的标题和内容?
{%include“block.twig”和{'title':section.title,'content':section.content,}%
?实际上
embed
正是我需要的()。这是一个有效的答案,谢谢,但我觉得它不够干净。这意味着声明一个
sections
对象,如果每个节的内部内容都很大,那么这个对象会变得非常难看。考虑到内容只是一个字符串,可以存储在对象的单个属性中,我不确定内容的大小如何使定义节对象难看。如果内容有几个不同的部分,那么内容可能会保证它自己的类,其中一个实例将被分配给section对象。内容是HTML标记(带有嵌套的标记),因此将其声明为字符串是不漂亮的。我很好奇,如果你不是从数据库字段中提取此内容,在这种情况下,它已经是一个字符串(我不允许将HTML存储在数据库中),或者通过连接字符串来构建内容HTML,您如何获取这些内容?我认为实现这一点的唯一方法是拥有多个不同的数据点,其中包含内容。在这种情况下,最好将这些数据点封装在内容类中,并在细枝模板中呈现。
{% 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 %}
{% for section in sections %}
    <div class="A B C">
        <h3 class"D">{{ section.title }}</h3>
        {{ section.content }}
    <div>
{% endfor %}