2012-04-13 53 views
2

我有一个奇怪的情况,我的树枝模板生成适合多个“盒子”的内容,使得包含盒子的数量可以在数量上有所不同。我正在寻找一种在子模板中定义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。我相信我将需要在父母中定义block1,block2等(允许合理的上限),然后在子女中提供包含内容的块。这都是假设包含不是首选的方法。

回答

2

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

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

说箱子是阵列看起来像这样: $盒=阵列( 阵列( '标题'=> '首先名称', '内容'=>“之一的内容”, ) 阵列( '标题'=> '二标题', '内容'=> '的两个内容', ) );

你会在树枝使用:

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

现在render_box.html会在这里面运行循环背景下,这样的盒子vairable存在于这个模板。你render_box.html应该是这样的:

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

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

这工作,但我担心的是,数组的'content'部分将是HTML的负载,多使用树枝变量和函数吧。 – 2012-04-13 17:30:55

+0

如果我理解正确,您的方法是填写box.content枝条代码?这对我来说意味着在你的架构中出现错误。如果你想使用模板,你不想把模板代码放在一些数据中......我的例子过于简单,当然你可以增加一百万个字段。 – 2012-04-15 09:13:11