Smarty : Parameter an JavaScript-Funktion übergeben

In meinen Konfigurationsdateien verwende ich hin und wieder auch mal Variablen, deren Werte (Texte) sich über mehrere Zeilen erstrecken. Solche mehrzeiligen Texte werden in der Config-Datei mittels """ am Anfang sowie am Ende markiert z.B.:
# Konfigurationsdatei (mittels config_load einbinden)
# globale Variable (mehrzeilig)
text1 = """Sed ut perspiciatis, unde omnis iste natus error sit
voluptatem accusantium doloremque laudantium, totam rem
aperiam eaque ipsa, quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt"""
...
Das funktioniert auch soweit ganz gut, wenn man die Variable bzw. deren Text im Template selbst ausgibt (z.B. <div>text1 = {#text1#}</div>).

Ich hatte aber gerade das Problem, dass ich eine solche Variable als Parameter an eine JavaScript-Funktion übergeben wollte, etwa nach folgendem Prinzip:
...onclick="show('{#text1#}');"
Dieser Ansatz funktionierte jedoch nicht. Ich probierte noch verschiedene Sachen mit den Anführungszeichen, aber es half alles nichts.

Dann dachte ich mir: "Was wird wohl passieren, wenn man die Zeilenumbruchzeichen (unter Linux '\n') aus dem Text der Variable entfernt?" Also dann mal das Zeugs entfernt und das Ergebnis einer neuen Variablen zugewiesen:
{assign var=neuText1 value=#text1#|replace:"\n":""}
Nun die Variable desc als Parameter übergeben:
...onclick="show('{#neuText1#}');"
Und siehe da, es funzte ganz wunderbar :-)

Noch ein kleiner Tipp! Wenn man den mehrzeiligen Text nicht nur - wie gezeigt - in die drei doppelten Anführungszeichen (""") hüllt, sondern gleich auch noch die einfachen Anführungszeichen (') angibt, dann spart man sich dies bei der Parameterübergabe:
# globale Variable (mehrzeilig mit """')
text1 = """'Sed ut perspiciatis, unde omnis iste natus error sit
voluptatem accusantium doloremque laudantium, totam rem
aperiam eaque ipsa, quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt'"""
...

{* unter die Parameterübergabe ohne Anführungszeichen im Template *}
<div onclick="show({#neuText1#});">...</div>
 
 Artikel als Bookmark:
Beitrag wurde bisher 2146 mal geöffnet
RA Zabel/Stolze
  • 96 Artikel  (zeigen)
  • 66485 Klicks
  • 56 Kommentare
  • 9 Artikel (2010)  (zeigen)
  • 1854 Klicks (2010)
  • 0 Kommentare (2010)
Freunde / Linkparade (4)