2012-06-21 17 views
25

Wie einem lokalen Template-Variable mit einem String knapp unter verketteten zuweisen wie:Smarty lokale Variable Verkettung mit String

{$yes_src=const1.'yes'.const2} 

bis unten in dem Code in die {$yes_src} Weise verwendet werden.

+0

Mögliche Duplikat [Concatena in smarty] (http://stackoverflow.com/questions/10023042/concatenation-in-smarty). Ich mag die Antworten auf diese Frage besser. –

Antwort

50

Die Art und Weise Sie es tun, um die „Kurzform“ ist rufen von assign, man muss nur die verwenden correct quoting mechanism:

{$yes_src="`$const1`yes`$const2`"} 

Verwendung assign:

{assign var="yes_src" val="`$const1`yes`$const2`"} 

Verwendung cat:

{$const1|cat:"yes"}{$const2} 

Sie können auch einfach die Variablen setzen nebeneinander, ohne es zu einer Variablen zugewiesen:

{$const1}yes{$const2} 

... keine Variable benötigt.

Ein Hinweis Wenn Sie sich assign mehr als selten, könnte man eine falsche Vorstellung über die Ideen der Trennung haben Logik von der Präsentation finden Verwendung. Normalerweise würden Verkettungen und andere variable Arbeiten in PHP durchgeführt werden, bevor die Vorlage überhaupt beteiligt ist. Die Rolle der Vorlage ist nur die Daten anzeigen, sollten Sie vermeiden, Erstellen oder Ändern der Daten in der Vorlage.

Dokumentation

+1

Smarty3 erlaubt auch {$ yes_src = "{$ cont1} ja {$ const2}"} – rodneyrehm

6

Versuchen Sie folgendes:

{capture assign=yes_src}{$const1}.'yes'.{$const2}{/capture} 

Und dann die neue Variable verwenden:

{$yes_src} 
9
{ $yes_src = $variable|cat:"some string"|cat:$variable } 
+1

Wertvoll, wenn man eine Zeichenkette mit Anführungszeichen benötigt, weil die Gegenseite nicht mit einem Apostroph arbeitet. {zuordnen 'myLoc' ' | cat: {$ smarty.config.LOCALE_STR} | cat: ""} – TMa

+0

@TMa Danke für den Tipp –