Thread Frage zum Schreiben in die Datenbank (24 answers)
Opened by Kuerbis at 2011-08-14 09:13

pq
 2011-08-14 13:46
#151579 #151579
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
WWW::Battie::Modules::Poard hat eine Dispatch-Tabelle, in der Methoden wie post_answer, thread, message, latest usw. angegeben sind. Diese sind im Modul als Subroutinen poard__post_answer, poard__thread usw. implementiert.

Beispiel /poard/post_answer/123/456:

Das Hauptmodul erkennt aus der PATH_INFO, dass z.b. post_answer im Modul poard angefragt wird, schaut in der Dispatch-Tabelle nach und ruft diese Methode dann auf und übergibt ihm als Kontext sich selbst, welcher dann das Request-Objekt und eine noch leere Response enthält. Weitere Parameter aus PATH_INFO werden im Request abgelegt.
Die Methode post_answer übernimmt dann die Logik und holt sich die weiteren Parameter aus $request->args, welches einfach eine arrayref ist (in dem fall [123,456].
Weitere CGI-Parameter werden klassisch per $request->param(...) geholt.

Als Standard-Template wird vom Hauptmodul templates/poard/content.html festgelegt.

Die Ergebnisse legt die Methode post_answer in einem Hash ab, der oft in Frameworks als Stash bezeichnet wird. Das sind erstmal nur Datenstrukturen.

Ggfs. kann das Modul auch das Standard-Template verändern.
Als Beispiel könnte man hier die Refresh-Funktion in der Übersicht der letzten 24 Stunden nennen. Bei einem normalen Request /poard/latest/24h ist das Template wie festgelegt content.html, wenn der Request aber über den Refresh-Button per Ajax reinkommt, wird das Template auf templates/poard/ajax.html festgelegt.
Ausserdem kann das Modul in dem Fall bestimmen, dass das Hauptmodul keine Navigation erzeugen muss.

Das Hauptmodul hat nun nach Aufruf der Modulmethode die Template-Parameter im Stash und weiss, welches Template verwendet werden soll.
Das Template wird nun gerendert und der Header erzeugt. Diese kann das poard-Modul mittels des Response-Objektes ggfs. auch verändern.

(edit: Das Hauptmodul erzeugt jetzt noch die Navigation, also z.B. das Kästchen mit dem Link zum Postfach, das ggfs. anzeigt, ob neue PM im Postfach sind.)

Die Ausgabe erfolgt. Fertig.
Last edited: 2011-08-14 13:53:44 +0200 (CEST)
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

View full thread Frage zum Schreiben in die Datenbank