Brauchen? Nein. Aber ich will schon Programmierbarkeit in einer Template Engine. Nicht für Geschäftslogik: Die entscheidet,
was angezeigt wird. Aber für die Präsentation,
wie es angezeigt wird: Das hat in der Geschäftslogik nichts verloren. Das muss kein if/else sein, es geht auch zum Beispiel mit der Auswahl unterschiedlicher Template-Bausteine, oder in einer eigens dafür zuständigen Programmschicht zwischen Geschäftslogik und Präsentation.
Ein paar Beispiele aus meiner Praxis (alles allerdings lange her):
- In der Frühzeit des WWW war es wichtig, um die Unterschiede zwischen Netscape und Internet Explorer heruzuprogrammieren. Das ist viel entspannter heutzutage.
- Benutzerwünsche beachten: JavaScript ein/aus, Navigation ein/aus, Cookies ja/nein, Dyschromatopsie-Einstellungen und so weiter.
- Grammatikalische Feinheiten, zum Beispiel Singular/Plural. "Sie haben 1 Produkte im Warenkorb". Von der Geschäftslogik kommt nur die Zahl, das sauber darzustellen, kann von mir aus gern die Template-Engine machen.
- Ausblenden / Umformatieren von Formularfeldern, bei denen ein Benutzer keine oder nur eine Auswahlmöglichkeit hat. Die Geschäftslogik liefert eine leere Liste oder eine Liste mit einem Element, das Template wählt zwischen Feld weglassen / als Label (nicht editierbaren Text) formatieren oder eben Eingabefeld, wenn's mehr gültige Optionen gibt.
Wir haben das auch mit dem
Template Toolkit gemacht. Anfangs, weil es noch gar nicht sooo viele Alternativen gab (das Template Toolkit hieß damals noch Text::Metatext), und später, weil klar wurde, dass man von TT wohl nie wegen fehlender Funktionen wird umsteigen müssen.
Die Kehrseite ist, dass TT sehr mächtig ist und es Konventionen braucht, damit das wartbar bleibt. Aber... das ist bei Perl genauso. Beides fällt in die Kategorie "Software für Erwachsene". Die Tatsache, dass
Template::Plugin::DBI existiert, heißt ja nicht, dass man es verwenden muss (oder sollte).