Php 在for循环中使用父块和子块,包括变量

Php 在for循环中使用父块和子块,包括变量,php,twitter-bootstrap,twig,Php,Twitter Bootstrap,Twig,有没有办法创建一个易于维护的for-loop-in-Twig,它可以与Bootstrap的布局一起工作 我使用的是bootstrap的row功能,这意味着每一行都有一个div类“row”。这使得twig中的事情变得棘手,因为我无法输入这些标题div 例如,我的主页将有几篇文章,并扩展了框架模板,如下所示。是否有任何方法可以使用此骨架基础并在for循环中多次使用它 我尝试添加文章块,但它覆盖了其中的所有内容。我必须创建另一个模板才能工作吗 <div id="main" class="cont

有没有办法创建一个易于维护的for-loop-in-Twig,它可以与Bootstrap的布局一起工作

我使用的是bootstrap的row功能,这意味着每一行都有一个div类“row”。这使得twig中的事情变得棘手,因为我无法输入这些标题div

例如,我的主页将有几篇文章,并扩展了框架模板,如下所示。是否有任何方法可以使用此骨架基础并在for循环中多次使用它

我尝试添加文章块,但它覆盖了其中的所有内容。我必须创建另一个模板才能工作吗

<div id="main" class="container-fluid">
    {% block article %}
    <div class="row">
        <div class="col-md-3"></div>
        <div id="title" class="col-md-6">
            {% block title %}
            {% endblock title %}
        </div>
        <div class="col-md-3"></div>
    </div>
    <div class="row">
        <div class="col-md-1"></div>
        <div id="left-nav" class="col-md-2">
            {% block left_nav %}
            {% endblock left_nav %}
        </div>
        <div class="col-md-6" id="content">
            {% block content %}
            {% endblock content %}
        </div>
        <div id="right-nav" class="col-md-2">
            {% block right_nav %}
            {% endblock right_nav %}
        </div>
        <div class="col-md-1"></div>
    </div>
    {% endblock article %}
</div>

{%block article%}
{%block title%}
{%endblock title%}
{%block left_nav%}
{%endblock left_nav%}
{%block content%}
{%endblock内容%}
{%block right_nav%}
{%endblock right_nav%}
{%endblock项目%}
在这种情况下,我如何迭代和创建多个“文章”

使用parent()没有帮助,因为它只打印开始和结束标记,而我需要将它们放置在正确的部分周围,否则这些行将无法工作

换句话说,在for循环上下文中,如何更改父块内子块内变量的值

道歉如果这不清楚,我觉得很难用语言表达

编辑: 我知道twig中存在for循环,我只是不确定如何实现这个特定问题的解决方案

作为骨架模板及其输出的简单示例:

模板

{%block title%}{%endblock%}
{%block content%}{%endblock%}
输出

这是第一篇文章。
职位1
这是第二篇文章。
职位2
{%foreach article%}
{{article.title}}
{{article.content}
{%endfor%}

模板是否假设文章是一个数组,其中包含具有关键字标题和内容的数组

我发现了一个相当可维护的解决方案,因为它仍然扩展了框架模板,但足够灵活,可以支持块内的循环

骨架

{%block article%}
{%block title%}
{%endblock title%}
{%block left_nav%}
{%endblock left_nav%}
{%block content%}
{%endblock内容%}
{%block right_nav%}
{%endblock right_nav%}
{%endblock项目%}
物品清单
{%extends'skeleton.php%}
{%block article%}
{posts%%中的post为%s}
{#开始标题#}
{{post.title}
{#结束标题}
{#开始左导航}
{{post.left}}
{#结束左导航}
{#开始内容}
{{post.getBody}
{#结束内容}
{从右导航开始}
{{post.right}}
{#结束右导航}
{%endfor%}
{%endblock项目%}

请参见编辑-我知道如何解决问题,只是不知道在这种情况下如何使用它使用article.variable更改部件?具体来说,我指的是如何在for循环中使用子块。例如,在该模板中,扩展模板需要多次打印文章块,然后用实际内容填充其子块。我不确定您是否可以。块是模板级和迭代级。使用if语句可能可以实现您想要的功能
<div class="row">
  <div class="title">
    {% block title %}{% endblock %}
  </div>
  <div id="content">
    {% block content %}{% endblock %}
  </div>
</div>
<div class="row">
  <div class="title">
    This is the first post.
  </div>
  <div id="content">
    Post 1
  </div>
</div>
<div class="row">
  <div class="title">
    This is the second post.
  </div>
  <div id="content">
    Post 2
  </div>
</div>
{% foreach article in articles %}
<div class="row">
  <div class="title">
    {{ article.title }}
  </div>
  <div id="content">
    {{ article.content }}
  </div>
</div>
{% endfor %}
<div id="main" class="container-fluid">
    {% block article %}
    <div class="row">
        <div class="col-md-3"></div>
        <div id="whitespace" class="col-md-6">
            {% block title %}
            {% endblock title %}
        </div>
        <div class="col-md-3"></div>
    </div>
    <div class="row">
        <div class="col-md-1"></div>
        <div id="left-nav" class="col-md-2">
            {% block left_nav %}
            {% endblock left_nav %}
        </div>
        <div class="col-md-6" id="content">
            {% block content %}
            {% endblock content %}
        </div>
        <div id="right-nav" class="col-md-2">
            {% block right_nav %}
            {% endblock right_nav %}
        </div>
        <div class="col-md-1"></div>
    </div>
    {% endblock article %}
</div>
{% extends 'skeleton.php' %}
    {% block article %}
        {% for post in posts %}
        <div class="row">
            {# Start title #}
            <div class="col-md-3"></div>
            <div id="title" class="col-md-6">
                {{post.title}}
            </div>
            <div class="col-md-3"></div>
            {# End title #}
        </div>
        <div class="row">
            <div class="col-md-1"></div>
            {# Start left-nav #}
            <div id="left-nav" class="col-md-2">
                {{post.left}}
            </div>
            {# end left-nav #}

            {# Start content #}
            <div class="col-md-6" id="content">
                {{post.getBody}}
            </div>
            {# end content #}

            {# start right-nav #}
            <div id="right-nav" class="col-md-2">
                {{post.right}}
            </div>
            {# end right-nav #}
            <div class="col-md-1"></div>
        </div>
        {% endfor %}
    {% endblock article %}