多个树枝模板块的阵列处理

时间:2012-04-13 14:22:15

标签: php twig

我有一个奇怪的情况,我的树枝模板构建内容以适应几个“框”,使包含框的数量可以变化。我正在寻找在子模板中定义n个块的一般方法,父代将呈现正确的数字。以下是我的子模板现在的示例:

{% extends "layout.participant.html.twig" %}

{% block box_left_title %}Personal Information{% endblock %}

{% block box_left_content %}
content here
{% endblock %}

考虑这些配对的标题/内容部分中可能有一个,两个或可能有5个。我想象的是某种方式将box_left_title定义为第一个数组槽,然后父模板(layout.participant.html.twig)将迭代每个块并根据需要构建尽可能多的“框”。

我现在正在考虑的解决方法是在父模板中定义box_left_content_1box_left_content_2等块,然后仅定义子项中使用的块。虽然它会起作用但感觉错误。

我在这里误用了模板继承吗?我应该考虑条件包括吗?关于此的指针是最受欢迎的。

更新:我的问题假定我可以在父模板中使用动态模块,但结果是not be possible。我相信我需要在父级中定义block1block2等(允许合理的上限),然后在子级中提供包含内容的块。这是假设包含不是首选方法。

1 个答案:

答案 0 :(得分:2)

您有多种方法。最简单的可能就是包容。

http://twig.sensiolabs.org/doc/templates.html#including-other-templates

Say boxes是一个如下所示的数组:     $ boxes = array(         阵列(             'title'=> '第一标题',             'content'=> '一个人的内容',         )         阵列(             'title'=> '第二标题',             'content'=> '两个内容',         )     );

你会在树枝上使用它:

{% for box in boxes %}
    {% include "render_box.html" %}
{% endfor %}

现在,render_box.html将在此for循环上下文中运行,因此此模板中存在框vairable。您的render_box.html如下所示:

<h1>{{ box.title }}</h1>

<p>{{ box.content }}</p>