Как объединить две строки в Smarty?
Почему это не работает в Smarty?
{my_function($test.'a1')}
Отображается следующая ошибка:
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "test.tpl" on line 1 "{my_function($test.'a1')}" Unexpected "'a1'", expected one of: "{" , "$" , "identifier" , INTEGER' in...
4 answers
Я только немного использовал smarty, но я думаю, что если вы окружите свою конкатенацию обратными метками, то она правильно их оценит. Пример ниже:
{my_function(`$test.'a1'`)}
Существует также встроенная функция assign, которая также может быть полезна: http://www.smarty.net/docsv2/en/language.custom.functions.tpl#language .функция. назначать
Наконец, если все остальное не удается, выполните объединение в php и назначьте его одной переменной и передайте ее шаблону.
Редактировать, игнорируйте приведенные выше предложения, я думаю, вам следует использовать следующий синтаксис:
{my_function var="`$test`a1"}
Если вы делаете это, переходя в функцию, вы можете выполнить захват или назначить
{capture assign="parameter"}{$test}a1{/capture} {my_function($parameter)}
{assign var="parameter" value=$test|cat:"a1"} {my_function($parameter)}
Я не пробовал использовать модификатор для параметра функции. Но ты мог бы попробовать. Кроме того, поскольку это пользовательская функция smarty, вы можете добавить третий необязательный параметр и объединить значения в стороне от функции.
<?php
function smarty_function_my_function($params, $smarty) {
$input = join('', $params);
}
Это потому, что Smarty не понимает синтаксис PHP. Он использует свой собственный синтаксис, как описано здесь и быстро сравнивается с синтаксисом PHP здесь. (Я включил последнюю ссылку, чтобы подчеркнуть эту мысль - Умный синтаксис - это умный синтаксис.)
Смотрите раздел о встраивании переменных в двойные кавычки, который должен дать представление о том, как выполнить задачу. (Подсказка: в этом случае обратные галочки должны использоваться внутри кавычек).
Счастлив кодирование.
Я нашел этот код и он отлично работает для меня
Местоположение smarty\plugins\function.concat.php
<?php
function smarty_function_concat($params){
return implode('', $params);
}
?>
Код On.tpl:
{объединение 1="строка 1" 2="вторая" 3="другая строка"}