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

  • 本文关键字:阵列处理 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等块,然后仅定义子模板中使用的块。 虽然它会起作用,但感觉不对。

我在这里是否误用了模板继承? 我应该考虑条件包含吗? 非常欢迎对此提出建议。

更新:我的问题假设我可以在父模板中有动态块,但事实证明这是不可能的。 我相信我需要在父级中定义block1block2等(允许合理的上限),然后在子级中提供包含内容的块。 这一切都是假设包含不是首选方法。

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

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

假设盒子是一个看起来像这样的数组: $boxes = 数组( 数组( "标题" => "第一个标题", "内容"=>"一个人的内容", ), 数组( "标题" => "第二个标题", "内容"=>"两个的内容", ), );

你会在树枝中使用它:

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

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

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