Andreas Korthaus: Web-Programme modular aufbauen

Beitrag lesen

Hi Sven!

Ich hatte mir überlegt, ob es nicht vielleicht besser wäre, auf eine ferige Template-Lösung wie SMARTY zu setzen. Das wäre professioneller, performanter also ich das jetzt kurzfristig hinbekommen könnte, außerdem ist es erweiterbar, das ich noch eigene Funktionalitäten einbauen kann.
Also habe ich eine Smarty-Template-Datei, in der der HTML-Code steht, und die dynamischen Elemente binde ich mit den entsprechenden Funktionen ein. Wobei sich hier die Frage stellt, wie ich oft wiederkehrende Elemente behandle, also vor allem dynamische Tabellen. Sollten solche HTML-Tabellen dann im Template immer gleich(redundant)  stehen, oder sollte ich vielleicht den kompletten HTML-Code über eine Methode einbinden, also ich füge in das Template nur eine Variable ein für {$Lieferantentabelle}, und im PHP-Code schreibe ich mit einer Methode HTML-Code in die Variable. Oder besser, ein extra Template für die Tabellen, in das dann die Variablen integriert werden, und dessen ausgabe dann in das eigentliche Tenmplate an der hierfür vergesehen Stelle eingebaut wird - ich glaube langsam zu verstehen...
Aber wenn ich das jetzt so mache, dann brauche ich ja noch eine "Zwischenstufe", ich kann ja nicht direkt aus einem Smarty-Template auf eine Methode zugreifen oder? Also müßte ich noch das Ergebnis der Methode in eine Variable schreiben und die dann in das Templete einbinden, aber vielleicht geht das doch, so weit bin ich noch nicht bei smarty.

Ok, und das soll hinter den Kulissen passieren: Wenn du den Link klickst, wird zwar die URL "/lieferanten/uebersicht.html" angefragt, diese URL wird aber intern von immer demselben Skript entgegengenommen und ausgewertet.

Hm? Wieso das? Würde doch reichen wenn unter der angefragten Adresse das Modul liegt, welches sich das Template läd, ggfs. parst(bei smarty nue einmal pro Änderung!) und entsprechnden HTML-Code dann ausgibt. Aber wieso sollte man das über ein einziges Script regeln? Was hätte man davon? Und wie soll man das machen? Mit einer Rewrite-Rule? Also den ganzen Query-String als parameter an das basis-script übergeben und diesen dann selbst parsen? Aber das ist doch nun wirklich langsam etwas umständlich, oder? Vor allem - was mache ich beie ineem Datei-Upload? Oder überhaupt bei einenm POST-Request? Beides verwende ich häufig. Wie soll ich dann noch an die Parameter kommen? Und vor allem - an die hochgeladene Datei?

Anscheinen soll das Template "/lieferanten/uebersicht" in Aktion treten. In diesem Template ist (neben etwas Design, was für die Funktion natürlich unwichtig ist) primär nur gespeichert, welche Datenbank wie abgefragt werden soll und wie das Abfrageergebnis aussehen soll (und dafür hast du entweder ein {$WHILE}...{$ENDWHILE}-Konstrukt, oder ein externes Template, welches pro Datensatz benutzt wird).

Aber ist das ddnn nicht anders herum logischer? Ich lade mit dem Request-String das Modul direkt, und das Modul bindet entsprechend ein Template ein, um die erzeugte Ausgabe mit HTML zu umfassen.

An Sessions ist nichts sonderlich schlecht. Nur muß man sich entscheiden: Entweder braucht man sie wirklich - dann aber bitte durchgehend und überall. Oder man braucht sie nicht. Die meisten Webprojekte brauchen sie nicht.

ich _denke_ ich brauche sie nicht, da benutzername udn sprache eigentlich die einziegn User-abhängigen Dinge sind, die über den gesamten Besuch gespeichert werden müssen. Ich hatte halt nur gedacht das ich ander Einstellungen die ggfs. auf jeder Seite neu aus einer Config-File geparst werden müssen, bzw. dann noch über Funktionen aus den einzelnen Modulen geholt werden müssen, das man das lieber nur einmal macht und dann den so erzeugten Array über die Session-Funktion mitschleppt.

Danke Dir sehr für die Hilfe. Nur weiß ich nicht ob sich so eine komplexe modulare Struktur lohnt nur weil ich 2 oder 3 Erweiterungen nachträglich einbinden können will. Meinst Du nicht auch das ich hier lieber auf fertige und für gut befundene(bestimmt nicht perfekt, vor allem für ein spezielles Projekt ist es nie perfekt, aber allemal besser als ich es in absehbarer Zeit hinbekäme!) Module verwende, also in diesem Fall smarty und pear, das verstehen dann im Fall der Fälle auch andere Leute besser als eine selbstgebastelte Lösung. Ich kenne mich aber mit beiden Lösungen noch nicht wirklich aus, ich teste gerade ein wenig damit und eigentlich bin ich bisher ganz zufrieden.

Viele Grüße
Andreas