2012-04-13 55 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