Gunther: + (PHP) Template-Parser/ -Engine und MVC [erledigt]

Beitrag lesen

Hi!

Du schaust dir die Geschichte von außen an. Ich gehe da lieber der Reihenfolge nach. Da wäre als erstes ein Request. Ohne den, nützt dir das beste Template nichts. Vom MVC ausgehend startet der Request ja nicht gleich ein Template, sondern er landet typischerweise beim Front-Controller, der außer grundlegenden Initialisierungen zu einem bestimmten ActionController routet. Dieser Action-Controller erledigt (oder überwacht zumindest) die eigentliche Aufgabe, die im Hintergrund stattfindet, die Business-Logic (meist Speichern oder Abfragen von Daten). Daraus ergibt sich dann eine Ausgabe.

Ja, genau. Das war mein (Denk-)Fehler. Ich habe das Pferd sozusagen von hinten aufgezäumt. Du hast natürlich Recht, dass ich sowieso zuerst die 'Actions' definieren muss, bevor überhaupt irgendetwas in ein Template kommt.

In deinem Fall scheint mir es so zu sein, dass neben der Hauptausgabe eine Menge "Nebensächlichkeiten" in der Ausgabe zu finden sein sollen. "Oberflächlich" betrachtet werden das mehr oder weniger Kästen sein, die verschiedenen Zwecken dienen: Navigation, Login-Bereich, Werbung, News-Ticker und so weiter. Diese willst du anzunehmenderweise mit den Einzel-Templates abdecken. Es ist nun aber nicht so, dass sich ein Action-Controller um alles kümmern muss. Besser ist es dann, die Teilaufgaben auf einzelne Controller zu verteilen, was dann je Ausgabemodul eine eigene Kombination aus M, V und C ergibt. Es muss dann natürlich einen Koordinator geben, der die einzelnen Action-Controller der benötigten Module abgrast und deren Ergebnis in das grundlegende Seitengerüst einbaut.

Exakt so soll es sein. Um eben möglichst flexibel in den Möglichkeiten zu sein, möchte ich für die verschiedensten (Klein-)Aufgaben eben jeweils einen separaten 'Mini Action-Controller' erstellen.

Spontan fallen mir zwei wesentliche Arten von Action-Controllern ein: Der eine Typ soll eine allgemeine Art von Aufgaben erledigen, die mehrfach vorkommt, sich aber nur in Kleinigkeiten unterscheidet. Den kann man mit übergebenen Parametern steuern. Der andere Typ ist konzipiert für Spezialfälle. Dieses Controller sind so individuell, dass se nur für einen einzigen Fall zu gebrauchen sind und deshalb nicht flexibel mit Parametern versorgt werden müssen. Zwischen beiden Arten kann es beliebig viele Zwischenstufen geben.

Jo, leuchtet ein.

Was hieltest du denn von der Variante, diese Informationen jeweils in jedem Template mit zu speichern?

Prinzipiell Abstand. Das Template soll nur ausgeben und keine grundlegenden Entscheidungen treffen. Die Entscheidung, was auszugeben ist, ist abhängig vom Request. Bei einer Zeitung wird der Inhalt vom Chefredakteur bestimmt und nicht vom Layouter.

Nach eine Nacht drüber geschlafen, stimme ich dir voll und ganz zu. Ich weiß auch nicht, warum ich es vorher immer andersherum betrachtet habe!?

Beispielsweise DotNetNuke. Ein Modul wird dort über die Administrationsoberfläche hinzugefügt. Man wählt das Modul aus und gibt an, in welche Pane - also in welchem Bereich des Grundgerüst - es hinzugefügt werden soll. Jenes Video zeigt ab kurz vor Minute 4:00, wie das dort gemacht wird. Dabei wird nicht das Template direkt geändert sondern die Konfigurationsdaten. Bei einem Request wird also nicht das Grundgerüst-Template nach Inhaltsmodulen durchsucht, sondern in der Konfiguration wird nachgesehen, welche Module verwendet werden sollen und an welcher Stelle sie im Grundgerüst einzufügen sind. Ohne Adminoberfläche kann man die Daten, welches Modul wo ausgegeben werden soll, in einer Konfigurationsdatei anlegen. Das Grundgerüst selbst wird sich selten ändern. Die Module und ihre Positionierung lassen sich jedoch auch so schon an einer zentralen Stelle konfigurieren und man braucht dazu noch nicht mal HTML-Kenntnisse, um über das Template gehend die Seite (in gewissen Grenzen natürlich) umgestalten zu können.

Vielen Dank für den Link. Ich hab's mir mal angeguckt - sehr 'inspirierend'!

Überhaupt meinen allerbesten Dank für deine Zeit, Mühe und Hilfe. Als 'Einzelarbeiter' verrennt man sich halt manchmal, und dann braucht es fremde Hilfe, um wieder auf die richtige Spur zu kommen. Das ist dank deiner Unterstützung jetzt wieder der Fall!

Dank & Gruß
Gunther