Schrift
[thread]3064[/thread]

Rekursive Templates mit Catalyst und TT



<< >> 6 Einträge, 1 Seite
moritz
 2007-06-11 16:03
#29054 #29054
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Ich möchte in einem Gästebuch/Forum, das in mit Catalyst schreibe, Threads rekursiv darstellen.

Jeder Artikel besteht aus dem eigentlichen Artikel, und einer Liste der Antworten. Mein bisherige Ansatz für das Template sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<div class="gb_entry">
<h2>[% entry.subject %]</h2>
<div id="gb_message">
[% entry.message %]
</div>
<ul>
[% FOREACH s IN entry.siblings %]
<!-- hier ist mein Problem: wie mache ich die Rekursion richtig?-->
[% PROCESS entry.tt2 s %]
[% END %]
</ul>
</div>


Ich will also das Template rekursiv so einbinden, dass in dem eingebunden Template der Wert entry auf s gesetzt wird.

Kann ich das irgendwie sinnvoll in dem Template machen? Dieser Versuch ergibt
Code: (dl )
file error - recursion into 'entry.tt2'


Oder muss ich das Problem ganz anders angehen?

Danke schon mal im voraus.
esskar
 2007-06-11 16:09
#29055 #29055
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
man kann jede rekursion als nicht-rekursion darstellen
moritz
 2007-06-11 16:22
#29056 #29056
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Das ist mir schon klar, aber wie setze ich das in den Templates um? Rekursion wäre halt schon praktisch ;-)

Und mir fällte gerade keine schöne iterative Lösung ein :(
pq
 2007-06-11 16:27
#29057 #29057
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
HTC kann rekursion. geht aber erst richtig in 0.86. ich lade das mal die nächsten tage hoch
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-06-12 01:09
#29058 #29058
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
0.86 ist auf dem weg zu den mirrors.

wieso kann TT eigentlich keine rekursiven includes. sowas finde ich
bei baum-artigen strukturen sehr praktisch. klar laesst sich jede
rekursion auch iterativ abbilden, aber u.u. mit mehr code. wenn ich
eine baumstruktur mit einer html-liste abbilden will, ist das iterativ
sehr unschön.

edit: aha, man muss in TT einfach die RECURSION-option
setzen, dann geht es wohl.\n\n

<!--EDIT|pq|1181596443-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
moritz
 2007-06-12 03:39
#29059 #29059
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Das wars, ja. Perldoc lesen bildet doch, danke pq ;-)
Das alleine führt zwar noch zu endloser Rekursion, aber es gibt einen Hack:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<div class="gb_entry">
<h2>[% entry.subject %]</h2>
<div id="gb_message">
[% entry.message %]
</div>
[% FOREACH s IN entry.siblings %]
[% entry_bck = entry %]
[% entry = s %]
[% PROCESS entry.tt2 %]
[% entry = entry_bck %]
[% END %]
</div>


Ich habe keine Ahnung, wie es ohne den Backup-Hack funktioniert, aber so geht es - und das reicht mir ;-)

In meinem Fall habe brauche ich 'entry' im Rest des Templates mehr, daher müsste ich den alten Wert nicht wieder herstellen, aber wenn ich dass dann doch mal später benutzen sollte würde das sicher eklige Bugs geben ;-)
<< >> 6 Einträge, 1 Seite



View all threads created 2007-06-11 16:03.