2012-06-21 9 views
25

Jak przypisać zmienną lokalną szablon z łańcucha połączonego tak jak poniżej:Smarty zmienna lokalna konkatenacji sznurkiem

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

być stosowane poniżej kodu w sposób {$yes_src}.

+0

Możliwy duplikat [Concatena w smarty] (http://stackoverflow.com/questions/10023042/concatenation-in-smarty). Jednak podobają mi się te odpowiedzi. –

Odpowiedz

50

Sposób, w jaki robią to nazywamy „krótki formularz” z assign, wystarczy użyć correct quoting mechanism:

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

Zastosowanie assign:

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

Zastosowanie cat:

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

Można również po prostu umieścić zmienne obok siebie bez przypisywania go do zmiennej:

{$const1}yes{$const2} 

... nie zmienna potrzebne.

Uwaga Jeśli znajdziesz się używając assign więcej niż rzadko, może być błędne przekonanie o idei oddzielenia logiki od prezentacji. Zwykle konkatenacja i inne zmienne prace byłyby wykonywane w PHP zanim szablon zostanie kiedykolwiek zaangażowany. Rolą szablonu jest po prostu wyświetlaj dane, powinieneś unikać tworzenia lub zmieniania danych w szablonie.

Dokumentacja

+1

Smarty3 pozwala również na {$ yes_src = "{$ cont1} yes {$ const2}"} – rodneyrehm

6

Spróbuj tego:

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

a następnie użyć nowej zmiennej:

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

Wartościowe, gdy trzeba zawrzeć ciąg zawierający cytaty, ponieważ tyłki nie działają z apostrofem. {assign 'myLoc' ' | cat: {$ smarty.config.LOCALE_STR} | cat: ""} – TMa

+0

@TMa dzięki za wskazówkę –

Powiązane problemy