dedlfix: + (PHP) Template-Parser/ -Engine und MVC

Beitrag lesen

Hi!

Alle Template-Engines/ -Parser (Klassen) die ich mir angeguckt habe, setzen alle voraus, dass die jeweiligen Werte für die Ein-/Ersetzung im jeweiligen Template in irgendeiner Form bereits vorhanden sind. Das ist ja auch durchaus logisch und leuchtet (selbst) mir ein.

Das Template-System hat zur Aufgabe, Daten in eine Ausgabeform zu bringen. Seine Aufgabe ist in aller Regel weder, diese Daten zu beschaffen, noch diese Beschaffung anzuregen.

  • Die Frage, die sich mir dabei aber stellt ist, woher weiß ich (genauer: das Script), welche Daten denn nun genau benötigt werden? Es macht ja keinen Sinn, einfach immer alle Daten bereitzustellen/ -halten, wenn nur ein Bruchteil davon benötigt wird.

Das ist im MVC-Muster Aufgabe des Controllers. Der holt die Daten aus dem Model, wobei er selbst weiß, welches Model dazu wie zu melken ist. Und er übergibt sie dem Template-System, wobei er dazu weiß oder ermittelt, welches Template genau zur Ausgabe verwendet werden soll. Im Falle eines Fehlers könnte beispielsweise ein anderes Template enommen werden als im Gut-Fall. Jedes Template universell zu gestalten, dass es sowohl Gut- und Fehlerfall abdeckt werden, oder dass die Template-Engine selbst entscheidet ein passendes Teil-Template nachzuladen, halte ich konzeptionell nicht für besonders gut gelöst.

  • Muss ich dafür dann diese Informationen wiederum separat irgendwo vorhalten und pflegen, oder gibt es "elegantere" Lösungen?

Es gibt mehrere Möglichkeiten. Eine wäre, dass jeder spezielle Action-Controller weiß, was anzusprechen ist, wozu die Daten im Action-Controller hart zu kodieren wären. Das mag je nach Anforderungen ungünstig sein, weil immer Quelltext beim Umkonfigurieren zu ändern ist. Eine andere Möglichkeit wäre deshalb, diese Daten in einem Konfigurationssystem abzulegen.

  • Mir wäre ja eine "automatisierte" Lösung, die erst das/ die jeweilige(n) Template(s) "analysiert", und dann aufgrund der erforderlichen Werte quasi selbstständig die nötigen "Module" zur Bereitstellung der erforderlichen Daten inkludiert/ ausführt lieber. Wie setzt man so etwas prinzipiell am besten/ einfachsten um, bzw. gibt es das irgendwo schon fertig?

Der Action-Controller ist der Chef. Er frag praktischerweise nicht erst das Template, was es gern hätte, sondern weiß, was das Template kann. Er frag auch nicht die Models durch, was sie zu liefern in der Lage sind, sondern verlangt gleich vom passenden die Daten.

Lo!