Leider hab ich keine Vorgabe fuer einen Maximalwert..
Aber ich glaub ich hab eine Loesung... Template-Rekursion in Iteration umwandeln und Datenstruktur anpassen. Statt
$var = [
{
'cat_id' => 1,
'cat_name' => 'Foo',
'cat_sub' => {
'cat_id' => 2,
'cat_name' => 'Bar',
'cat_sub' => []
}
},
{
'cat_id' => 3,
'cat_name' => 'Buz',
'cat_sub' => []
}
]
einfach
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$var = [
{
'cat_id' => 1,
'cat_name' => 'Foo',
'inc' => undef,
'dec' => undef,
},
{
'cat_id' => undef,
'cat_name' => undef,
'inc' => 1,
'dec' => undef,
},
{
'cat_id' => 2,
'cat_name' => 'Bar',
'inc' => undef,
'dec' => undef,
},
{
'cat_id' => undef,
'cat_name' => undef,
'inc' => undef,
'dec' => 1,
},
{
'cat_id' => 3,
'cat_name' => 'Buz',
'inc' => undef,
'dec' => undef,
},
]
Und als Template dann:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<ul>
<TMPL_LOOP NAME="catLoop">
<TMPL_IF NAME="inc">
<ul>
</TMPL_IF>
<TMPL_IF NAME="cat_id">
<li><input type="checkbox" name="cat" id="c<TMPL_VAR NAME="cat_id">" value="<TMPL_VAR NAME="cat_id">" />
<label for="c<TMPL_VAR NAME="cat_id">"><TMPL_VAR NAME="cat_name"></label>
</TMPL_IF>
<TMPL_IF NAME="dec">
</ul></li>
<TMPL_ELSE>
</li>
</TMPL_IF>
</TMPL_LOOP>
</ul>
Edit: Typos und Template angepasst.\n\n
<!--EDIT|Cremator|1138301737-->