Leser: 21
Quoteglobal_vars - normally variables declared outside a loop are not available inside a loop. This option makes <TMPL_VAR>s like global variables in Perl - they have unlimited scope. This option also affects <TMPL_IF> and <TMPL_UNLESS>.
1
2
3
4
5
<TMPL_LOOP persons>
<TMPL_VAR days>
<TMPL_VAR name> <TMPL_VAR day>
</TMPL_LOOP>
</TMPL_LOOP>
<-- <TMPL_VAR name -->
2009-05-19T13:53:29 sid burnWenn du gerade ein Templating System am lernen bist würde ich dir auch lieber raten dich mit TT (Template::Toolkit) auseinander zu setzen, das ist mächtiger/einfacher.
QuoteAlso ich finde HT ist dadurch das es fast nichts kann eher viel zu komplex für den alltagsgebrauch.
2009-05-19T14:46:20 neniro2009-05-19T13:53:29 sid burnWenn du gerade ein Templating System am lernen bist würde ich dir auch lieber raten dich mit TT (Template::Toolkit) auseinander zu setzen, das ist mächtiger/einfacher.
oder, HTML::Template::Compiled!
2009-05-19T16:34:21 sid burnUnd das was mir eher missfällt ist das es keine Funktionsaufrufe kennt, was dann wieder dazu führt das man Sachen woanders macht und nicht im View wo es es eigentlich hingehört.
2009-05-19T17:00:43 sid burnOh, ich meinte auch gar nicht Funktionsaufrufe sondern Funktionsparameter. Ich habe das falsche geschrieben.
2009-05-19T17:12:41 pqmethodenparameter sollten aber funktionieren, wenn man use_expressions eingeschaltet hat...
also z.b. <%= expr="object.create_link('navi')" %>
wenn das nicht funktioniert, schreibt nen bugreport =)
2009-05-19T17:12:41 pqmethodenparameter sollten aber funktionieren, wenn man use_expressions eingeschaltet hat...
also z.b. <%= expr="object.create_link('navi')" %>
wenn das nicht funktioniert, schreibt nen bugreport =)
2009-05-20T07:49:21 sid burnHast du das erst kürzlich eingebaut?
QuoteDa wir HT nutzen bei uns im CMS und wir lokalisieren wollten, haben wir nach Möglichkeiten gesucht, hatte da vor kurzem HTC vorgeschlagen und war damals davon ausgegangen ob Parameterübergabe Funktioniert. Da es nicht in der Doku stand hatte "jegade" dich im IRC gefragt und da sagtest du das es nicht ginge?
2009-05-20T07:54:16 pqnö.
in der doku steht: use_expressions (since 0.91_003)
das war der 16. juni 2008
Quoteich hab jegade sicher nicht belogen. ich gehe einfach mal davon aus, dass er die falsche frage gestellt hat. kannst du mir sagen, wann, dann gucke ich mal in meinem log nach.
edit: das einzige, was ich finden kann, ist eine diskussion am 10. februar, und da habe ich nirgends gesagt, dass parameterübergabe nicht ginge. jegade wollte eine bestimmte syntax zur lokalalisierung, meine sah aber anders aus und damit war das anscheinend für ihn gestorben. kann ich auch nix machen.
2009-05-19T16:34:21 sid burnKlar hat es auch noch eine eigene TT angelehnte Syntax. Was ich aber auch nicht gerade positiv finde das es zwei Arten unterstützt.
QuoteUnd das was mir eher missfällt ist das es keine Funktionsaufrufe kennt
2009-05-19T17:08:23 pq2009-05-19T16:34:21 sid burnKlar hat es auch noch eine eigene TT angelehnte Syntax. Was ich aber auch nicht gerade positiv finde das es zwei Arten unterstützt.
es unterstützt keine zwei syntaxen, sondern nur zwei stile, also wie die begrenzer der template-anweisungen aussehen. keine ahnung, wie du da zwei syntaxen herausliest...
Quotees kann methodenaufrufe, und man kann eigene escaping-plugins schreiben. es gibt sicher situationen, in denen man eine einschränkung hat,
Quoteaber die hat man bei jedem templating mehr oder weniger, dann muss man schon perl selbst benutzen. auch TT kann sicher nicht alles, was perl kann. nur weil HTC eingeschränkter als TT ist, ist es für dich was komplett anderes?
Quoteman kann gerne behaupten, HTC sei unnötig, da es ja schon TT gibt. aber nur weil man im template weniger funktionen zur verfügung hat, ist es trotzdem noch ein template-system und damit trennung von html (o.ä.) und logik.
Quotemeiner ansicht nach verleitet HTC weniger dazu, zuviel logik im template unterzubringen.
QuoteH::T finde ich aber wegen der notwendigen Datenstrukturen nicht gut, man muss sich in der Logik sehr verrenken, um verwertbare Strukturen fürs Template herzustellen, und es fördert global_vars, deshalb denken auch einige, die auf HTC umsteigen, erstmal viel zu kompliziert.
2009-05-19T17:08:23 pqAn "global_vars" sehe ich auch nichts schlimmes. Wenn ich in Perl zwei for Schleifen geschachtelt habe, dann ist es nur natürlich das ich in der innersten for schleife auch auf variablen auf den übergeordneten Scope darauf zugreifen kann.
2009-05-20T08:43:30 sid burnUnd anstatt <TMPL_VAR asd> kann man auch. <%= asd %> etc. nutzen das ist in meinen Augen schon eine andere syntax. Ein HT Nutzer kann mit deinen ganzen speziel Tags erstmal nichts anfangen.
2009-05-20T09:11:32 pqnach deiner definition unterstützt schon HT selbst 2 syntaxen. dann haben wir einfach einen sehr unterschiedlichen begriff von syntax.
Quotebietet TT eigentlich nicht die möglichkeit, anstatt [% %] was anderes zu benutzen?
Quotewenn nein - bin ich froh, dass ich es nicht benutze. wenn ja - dann bietet TT nach deiner definition auch unterschiedliche syntaxen an.
2009-05-19T13:53:29 sid burnHT hat für mich auch nichts mit der Trennung zwischen View und Controller/Model zu tun.
2009-05-20T09:14:41 pq2009-05-19T13:53:29 sid burnHT 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?
Quoteoder hat TT für dich auch nichts damit zu tun? ich sehe da keinerlei argumentation diesbezüglich.
QuoteHT 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.
QuoteEine Template Engine (von engl. Vorlage und Antrieb, Motor) ist eine Software, die eine Datei (das Template) verarbeitet, und bestimmte Platzhalter darin mit jeweils aktuellen Inhalten füllt. Die Bezeichnungen Templateklasse und Templatesystem werden oft als Synonym für eine Template Engine verwendet.
[...]
In den Templates einer Template Engine sollte kein Programm-Code enthalten sein. Kontrollstrukturen (wie IF) sind allerdings oft in Templates möglich und verbreitet.
2009-05-20T11:33:50 pqhat mich nicht überzeugt, ganz im gegenteil. ein templating trennt die ausgabe (html oder was anderes) von der logik. und da ist für mich das prinzip von TT, HTC und HT gleich.
Quotewenn für dich templating was anderes bedeutet, können wir gleich aufhören zu diskutieren.
QuoteHT ist ein templatingsystem, genauso wie s/\$(\w+)/$params{$1}/g ein templatingsystem ist, nur mit viel weniger funktionen. ich sehe immer noch nicht, wo für dich der unterschied ist, ausser dass HT nunmal umständlicher ist.
Quotefur mich ist die diskussion beendet, ich habe keine lust, über etwas zu diskutieren, wenn du dir die definitionen einfach selber zurechtmachst.
QuoteIn den Templates einer Template Engine sollte kein Programm-Code enthalten sein. Kontrollstrukturen (wie IF) sind allerdings oft in Templates möglich und verbreitet.
QuoteSkriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen, die vor allem für kleine, überschaubare Programmieraufgaben gedacht sind. Sie verzichten oft auf bestimmte Sprachelemente, deren Nutzen erst bei der Bearbeitung größerer Projekte zum Tragen kommen. So wird etwa in Skriptsprachen auf den Deklarationszwang von Variablen verzichtet – vorteilhaft zur schnellen Erstellung von kleinen Programmen (siehe auch Prototyping (Softwareentwicklung)), bei großen hingegen von Nachteil, etwa wegen der fehlenden Überprüfungsmöglichkeit von Tippfehlern in Variablennamen.
Quotewenn ich im template ein bestimmtes datumsformat brauche und HT verwende, muss es der programmierer halt generieren. sehe da kein problem (ausser dass es natürlich umständlicher ist, aber es ist immer noch templating).
2009-05-20T11:48:22 reneeIch würde sowas auch nicht ins template packen. Sonst kann ein Designer ja gar nix mehr mit einem template anfangen. MVC bedeutet für mich nicht, sowas ins Template zu packen, sondern in eine View-Klasse, die die Daten für das Template aufbereitet...
QuoteDer Controller sucht alle möglichen Infos zusammen, die View-Klasse bereitet die Daten für die Ausgabe auf und schiebt die Daten ins Template... Sonst hat man ja doch wieder "Code" im Template. Ganz einfach Logiken wie Schleifen etc. versteht auch ein Designer, mehr aber häufig nicht.