Zitat:
|
Zitat von NetLook muss das erstmal in ruhe durchgehen, um es zu verstehen! |
Ist eigentlich nicht so komplex *g
Im ersten Block entscheidest du anhand der Anfrage, was zu tun ist. Gegebenenfalls kannst du hier auch Zugriffsrechte
prüfen oder sonst was anstellen, um herauszubekommen, welche Aktion durchgeführt werden soll.
Im zweiten Block führst du die Aktion dann aus. Hier führst du Änderungen an der Datenbank etc. durch und entscheidest am Ende, welche Seite (Seiten-Komponente etc.) angezeigt werden soll.
Im dritten Block bereitest du für die anzuzeigende Seite die Daten vor. Trägst sie also aus der Datenbank etc. zusammen und machst alles, um im Template möglichst nur noch String-Ausgaben, Iterationen (foreach) über Arrays für Listen und Tabellen, sowie konditionale Ausdrücke (if) anhand von vorbereiteten Flags (boolschen Werten) zu haben, z.B. ob ein Block angezeigt werden soll oder nicht.
Im letzten Schritt wird dann das Haupt-Template eingebunden, dass die jeweilige Komponente nachläd.
Das Ganz hat so natürlich die Nachteile, dass so a) die Werte nicht klarenen Namensräumen zugeordnet sind. Im Template könntest du also auch auf $sAction zugreifen, obwohl das garnicht so vorgesehen war. Und b) hast du womöglich Redundanzen in den Datenbankabfragen. Wenn also die Action eine ganze Tabelle einliest, um die Aktion durchführen zu können, dann liest der Teil im View-Block die Tabelle vielleicht nochmal ein, um sie für die Ausgabe vorzubereiten.
Aber ohne Klassen/Objekte lässt sich das wohl kaum sinnvoll anders lösen.
Obwohl ... wenn du den include-Befehl in eine Funktion packst und dieser ein Array mit den vorbereiteten Daten übergibst kannst in der Funktion das Array mit extract() quasi entpacken und dann das Template einbinden.
Und für das zweite Problem müsstst du über Funktionen auf globale Variablen zugreifen und diese dort ggf. aus der Datenbank auslesen, falls sie noch nicht ausgelesen wurden. Aber dann kannst du auch gleich ne Klasse schreiben.
Basti