T-Rex: Trennung der Anliegen (Logik - Layout)

Beitrag lesen

Hallo,

heute brauche ich ein paar Gedanken von euch zum Thema Trennung der Anliegen.
Bei meinem aktuellen Projekt versuche ich strikt die Logik vom Layout zu trennen. Bis jetzt habe ich auch nur Sachen die man Anzeigen muss. Sprich Daten aus der Datenbank holen, für die Ausgabe aufbereiten und ausgeben. Das ganze natürlich ganz sauber mit Template Engine.
Jetzt komme ich jedoch zum ersten Eingabe Formular. Der erste Versuch das Sauber um zu setzen ist gescheitert, da sich wie ich finde die Anliegen vermischen (dazu gleich mehr).
Mein Ansatz ist die Vorstellung das ein doofer Webdesigner (der keine Ahnung vom Programmieren hat) eine Dokumentation vor sich hat, die ihm alle Template Variablen und Möglichkeiten zeigt. Er muss sich also nur ums HTML und eventuell ein bisschen Javascript kümmern -> die Anzeige einfach. Dem zu Folge darf es Ihn auch nicht interessieren wie die Eingabefelder heißen. Das sieht dann nach meiner momentanen Vorstellung so aus:
<input type='text' name='{template_variable_name}' value='{template_variable_value}' />
Soweit so sauber.
Dieses input Feld möchte der Webdesigner jetzt jedoch als checkbox umsetzen. Dann bräuchte man jetzt noch eine Variable.
<input type='text' name='{template_variable_name}' value='{template_variable_value}' {template_variable_checked} /> (könnte man auch mit Javascript setzen, dann wäre der Wert von "template_variable_checked" egal, dann ist nur noch die Frage wichtig ob da was drin steht)
Auf jeden Fall haben sich jetzt die Anliegen wie ich finde vermischt. Die Programmlogik muss wissen ob es sich um eine Checkbox handelt oder nicht. Und das war jetzt nur ein einfaches Beispiel.
Bei einer Selectbox müsste man die richtie <option> selectieren. Somit muss die Programmlogik wissen ob es eine Selectbox ist und zudem welche <option>'s es gibt.
Bei Radiobuttons bekommt man ein Array in die Programmlogik...

Eine lange Erklärung und eine einfache Frage:
Kann man die Anliegen überhaupt sauber trennen?

Gruß
T-Rex