Как назначить локальный переменный шаблон со строкой каскадной так же, как показано ниже:Smarty локальной переменная конкатенации со строкой
{$yes_src=const1.'yes'.const2}
будет использоваться ниже в коде в порядке {$yes_src}
.
Как назначить локальный переменный шаблон со строкой каскадной так же, как показано ниже:Smarty локальной переменная конкатенации со строкой
{$yes_src=const1.'yes'.const2}
будет использоваться ниже в коде в порядке {$yes_src}
.
, как вы делаете это называют «короткую форму» 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 до того, как шаблон будет задействован. Роль шаблона в просто отображает данные, вы должны избегать создания или изменения данных в шаблоне.
Документация
assign
- http://www.smarty.net/docs/en/language.function.assign.tplcat
- http://www.smarty.net/docsv2/en/language.modifier.catSmarty3 также позволяет {$ yes_src = "{$ cont1} yes {$ const2}"} – rodneyrehm
Попробуйте это:
{capture assign=yes_src}{$const1}.'yes'.{$const2}{/capture}
И затем использовать новую переменную:
{$yes_src}
{ $yes_src = $variable|cat:"some string"|cat:$variable }
Достоинство, когда нужна конкатская строка, содержащая кавычки, потому что обратные тики dos не работают с апострофом. {назначить 'myLoc' ' | cat: {$ smarty.config.LOCALE_STR} | cat: ""} – TMa
@TMa спасибо за отзыв –
Возможный дубликат [Concatena (http://stackoverflow.com/questions/10023042/concatenation-in-smarty). Мне нравятся ответы на это лучше. –