Php 在for循环中使用父块和子块,包括变量
有没有办法创建一个易于维护的for-loop-in-Twig,它可以与Bootstrap的布局一起工作 我使用的是bootstrap的row功能,这意味着每一行都有一个div类“row”。这使得twig中的事情变得棘手,因为我无法输入这些标题div 例如,我的主页将有几篇文章,并扩展了框架模板,如下所示。是否有任何方法可以使用此骨架基础并在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
<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 %}