2012-06-21 4 views
25

Как назначить локальный переменный шаблон со строкой каскадной так же, как показано ниже:Smarty локальной переменная конкатенации со строкой

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

будет использоваться ниже в коде в порядке {$yes_src}.

+0

Возможный дубликат [Concatena (http://stackoverflow.com/questions/10023042/concatenation-in-smarty). Мне нравятся ответы на это лучше. –

ответ

50

, как вы делаете это называют «короткую форму» assign, вам просто нужно использовать correct quoting mechanism:

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

Использование assign:

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

Использование cat:

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

Вы также можете просто поместить переменные рядом друг с другом без присвоения его переменной:

{$const1}yes{$const2} 

... никакая переменная не требуется.

Примечание Если вы будете использовать assign более редко, вы можете иметь неправильное представление о идеях разделения логики от представления. Обычно конкатенация и другая переменная работа выполняются на PHP до того, как шаблон будет задействован. Роль шаблона в просто отображает данные, вы должны избегать создания или изменения данных в шаблоне.

Документация

+1

Smarty3 также позволяет {$ yes_src = "{$ cont1} yes {$ const2}"} – rodneyrehm

6

Попробуйте это:

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

И затем использовать новую переменную:

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

Достоинство, когда нужна конкатская строка, содержащая кавычки, потому что обратные тики dos не работают с апострофом. {назначить 'myLoc' ' | cat: {$ smarty.config.LOCALE_STR} | cat: ""} – TMa

+0

@TMa спасибо за отзыв –

Смежные вопросы