Smarty, gutes Design und die Trennung von Logik, Inhalt und Form
am 04.12.2006 12:53:04 von Stefan+UsenetWuerde mich interessieren, ob solche Dinge immer nur mir
passieren...
Gegeben ist ein Formular, das (neben diversen Eingabefeldern) auch
einen rein deskriptiven Freitext enthaelt. Das Programmsystem
verwendet Smarty, das betreffende Feld wird mit:
|
|
|
|
sauber und elegant angezeigt. Nun kommt allerdings eine Erweiterung,
die es ermoeglicht, innerhalb der Beschreibung auszufuellende
Luecken zu definieren - die Luecken sind in der Notation &012, &022,
&032, ... gekennzeichnet (die Notation stammt aus einer Norm, ist
hier aber nicht weiter von Belang). Durch:
| $tpl['searchpattern'] = '/&0?(\d{1,2})2/';
und
|
|
|
|
|
bekomme ich das gewuenschte Eingabefeld. Mit etwas gutem Willen kann
ich sogar das noch als elegant bezeichnen, wobei mit die fehlende
Moeglichkeit, "}" direkt im Template einzugeben (der Smarty-Parser
scheint da etwas schwach auf der Brust zu sein), schon ziemlich
stoert, da ich mich nun in PHP ploetzlich wieder um HTML-Entities
kuemmern muss.
Aaaaber: im Sinn der Benutzerfreundlichkeit sollte das Eingabefeld
natuerlich auch noch ein value="{$oldValue|escape:"html"}" besitzen.
Und da hakt es, denn in den Parameter von "regex_replace" bekomme
ich keine weitere Variable mehr hinein - bzw. weiss ich nicht, wie
ich die Zeile dafuer schreiben muesste.
Eine Variable $x koennte man (was ich ueberraschend genug finde) im
Template immer noch mit
| value=\"$x\"
ansprechen. Hier geht es allerdings nicht um skalare Variablen,
sondern um Felder, konkret um das, was man ausserhalb des Strings
mit
| {$gap[$1]|escape:"html"}
ansprechen wuerde, und _wenn_ es dafuer noch eine Notation gibt,
kenne ich sie nicht...
Wie loese ich das Problem, ohne im Programm den HTML-Quelltext zu
erzeugen und im Template umaskiert auszugeben?
(Alle Beispiele sind vom Problem abstrahiert und koennen daher
Tippfehler enthalten; ich bitte ggf. um Verzeihung)
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Stefan. Für prächtige Apokalypsen in hurtigen Stürmen!
(Sloganizer)