Thread HTML::Template->loop (Geltungsbereich der Variablen) (27 answers)
Opened by roooot at 2009-05-15 17:42

sid burn
 2009-05-20 12:43
#121776 #121776
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
2009-05-20T09:14:41 pq
2009-05-19T13:53:29 sid burn
HT hat für mich auch nichts mit der Trennung zwischen View und Controller/Model zu tun.

templating ist trennung zwischen HTML und logik. warum hat HT fur dich nicths damit zu tun, aber TT?

Nein, dass ist es eben nicht. Es ist Trennung zwischen Anzeigelogik und Trenung zwischen Workflow Logik, Oder Zugriff auf Speicher Logik. Im Template gehe ich nicht hin und fange an benutzer auszulesen oder mir meine Daten erst mittels SQL zu holen etc. Es ist nur dafür da die Daten aufzubereiten und in einem Format zu bringen. Ich selber meine hier aber auch eher MVC Logik.

Dadurch das HT keine Funktionen und Funktionsargumente kennt begrenzt es die Anzeigemöglichkeiten auch automatisch ein.

Für eine saubere Trennung übergibst du deinen Template einfach nur ein Datum. Sagen wir ein DateTime Objekt. Aber wie das Datum angezeigt wird. Ob nun DD.MM.YYYY oder mit oder ohne Zeit das ist alles Anzeigelogik.

Diese kann sich je nach Template je nachdem wo/wie man es nutzt sich einfach unterscheiden. Und genau das erfüllt HT durch seine begrenzung eben nicht.

Ich kann keine Funktionen aufrufen, ich kann keine Argumente übergeben, ich kann die Anzeige also nicht bestimmen. Um das zu Lösen geht man dann hin und fügt im Controller oder sei es im Model irgendeine Logik hinzu das das Datum so Formatiert wie man es Anzeigen möchte.

Und das ist schon der falsche Punkt. Das hat da nichts verloren. Für die Anzeige ist das Template zuständig. Vielleicht formatiere ich es in das Deutsche Format. Was ist aber wenn ich das Template ändere und ein anderes Format haben möchte, oder beide Formate? In der Überschrift nur das Datum dadrunter nur die Zeit?

Die Sache ist das man im Controller oder Model anpassungen macht je nachdem wie man es Anzeigen möchte. braucht man irgendwo ein neues Format, passt man wieder Controller/Model etc. an und erweitert es. Man pflegt also für die anzeige zwei/mehrere stellen.

Das ist kein MVC.

Quote
oder hat TT für dich auch nichts damit zu tun? ich sehe da keinerlei argumentation diesbezüglich.

TT begrenzt mich nicht so sehr das ich da Anzeigelogik woanders auslagern muss weil TT dazu nicht in der Lage ist.

Natürlich begrenzt es auch in einer gewissen Form. Das liegt dann aber meistens höher so das wenn damit etwas nicht Möglich ist, man meist auch keine Anzeigelogik mehr hat.

Dein HTC sehe ich da ähnlich angesiedelt zu TT, da du dort ja genauso Funktionen aufrufen kannst und Parameter übergeben kannst (ohne Parameterübergabe hätte ich HTC ebenfalls als zu begrenzt gesehen). Aber HT ist der totale chaos. Da macht man fast alles für die Anzeige irgendwo im Code. Möchte man die Anzeige anpassen resultiert es oft das man die Datenstruktur generierung gleich mit anpassen muss.

Ansonsten hat TT ja noch eine Reihe von Virtuellen Funktionen mit der man die Anzeige weiter steuern kann. Elemente formatieren, verändern, joinen etc. sowas kennt dein HTC ja auch alles nicht (soweit du es anscheind dokumentiert hast, oder ich übersehe es).

Hat man es nicht führt es auch wieder dazu das man auf einmal wieder Textformatierungen irgendwo anders erledigt und nicht im View, der ja für die Anzeige verantwortlich sein soll. Daher habe ich halt meine persönliche meinung das TT die aufgabe des Views besser erfüllt als dein HTC.

HT selber erfüllt die Aufgabe einer Trennung zwischen Anzeige und den rest der logik aus den oben genannten gründen meiner ansicht nach überhaupt nicht.

Quote
HT ist lediglich eingeschränkter, aber warum ist es für dich damit was komplett anderes? das ist der satz, auf den ich mich u.a. in den anderen antworten bezog. vielleicht könntest du das ja mal klären.

Okay ich habe dir nun eine erklärung gegeben, reicht diese oder ist das noch zu unklar?

Ansonsten größtes Manko an HT ist noch die Datenstrukturgenerierung. Bei TT kümmert man sich nur darum alle nötigen Daten die man benötigt zu sammeln, diese übergibt man dem TT und dieser generiert daraus eben die anzeige die man benötigt.

Bei HT muss man nicht nur die daten sammeln, sondern gleich noch die Datenstrukturen aufbauen je nachdem wie man sie im View benötigt. Möchte man das Template verändern muss man evtl die Datenstrukturgenerierung anpassen. Man pflegt die ganze zeit zwei stellen. Der View hat auch nicht volle flexibilität da er die daten nur so aufbereiten kann wie übergeben.

Man kann es versuchen die Datenstrukturen irgendwie so gestalten das sie allgemeiner werden und man in HT irgendwie mehr flexibilität hinbekommt. Dann bewegt man sich aber genau darauf hin was TT macht. Die Daten einfach generell zur verfügung stellen und anzeigelogik eben nur im View Implementieren.
Last edited: 2009-05-20 12:48:16 +0200 (CEST)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread HTML::Template->loop (Geltungsbereich der Variablen)