php - 多个 Twig 模板 block 的数组处理

标签 php twig

我有一个奇怪的情况,我的 Twig 模板构建的内容适合几个“盒子”,这样包含盒子的数量可能会有所不同。我正在寻找一种在子模板中定义 n 个 block 的通用方法,并且父模板将呈现正确的数字。以下是我的子模板现在的样子:

{% 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) 将迭代每个 block 并根据需要 build 尽可能多的“盒子”。

我现在正在考虑的解决方法是在父模板中定义 box_left_content_1box_left_content_2 等 block ,然后仅定义在 child 。虽然它可以工作,但感觉是错误的。

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

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

最佳答案

您有多种方法。但最简单的可能是包含。

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

Say box 是一个如下所示的数组: $盒子=数组( 大批( '标题' => '第一个标题', '内容' => '一个的内容', ), 大批( '标题' => '第二个标题', 'content' => '两个内容', ), );

你可以在 twig 中使用它:

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

现在,render_box.html 将在此 for 循环上下文中运行,因此该模板中存在可用框。你的 render_box.html 看起来像这样:

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

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

关于php - 多个 Twig 模板 block 的数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142607/

相关文章:

php - 干净且 "dirty"网址

php - 将函数的结果设置为 twig 中的变量

symfony - 在外部js文件中使用Twig变量

php - 使用 symfony2 和 twig 创建文件文本

php - 将 HTML 转换为 doc 和 docx 格式时的分页符 - PHP

javascript - 可通过 Ajax 下载 CSV 文件

PHP 从另一个 URL 加载到 MySQL

php - Unity + PHP + SSL + Https + 黑客

sum - Twig:查找列中行值的总和

symfony - Knp DoctrineBehaviors 抛出 ContextErrorException : Warning: call_user_func_array() expects parameter 1 to be a valid callback