Как совместить две строки в Smarty? - PullRequest
2 голосов
/ 10 сентября 2011

Почему это не работает в 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 ]

4 голосов
/ 10 сентября 2011

Я немного использовал smarty, но я думаю, что если вы окружите свою конкатенацию обратными чертами, то она оценит их правильно. Пример ниже:

{my_function(`$test.'a1'`)} 

Существует также встроенная функция присвоения, которая также может быть полезна: http://www.smarty.net/docsv2/en/language.custom.functions.tpl#language.function.assign

Наконец, если ничего не помогает, выполните concat в php, присвойте его одной переменной и передайте в шаблон.


Редактировать, игнорировать приведенные выше предложения, я думаю, что вы должны использовать следующий синтаксис:

{my_function var="`$test`a1"}

http://www.smarty.net/docsv2/en/language.syntax.quotes.tpl

3 голосов
/ 10 сентября 2011

Если вы делаете это, передавая функцию, вы можете сделать захват или назначить

{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);
}
0 голосов
/ 03 июля 2012

Я нашел этот код и у меня отлично работает

Местоположение smarty \ plugins \ function.concat.php

<?php
function smarty_function_concat($params){
    return implode('', $params);
}
?>

На .tpl код:

{concat 1 = "string1" 2 = "second" 3 = "другая строка"}

0 голосов
/ 10 сентября 2011

Это потому, что Smarty не понимает синтаксис PHP .Он использует свой собственный синтаксис как , описанный здесь , и быстро сравнивается с синтаксисом PHP здесь .(Я включил последнюю ссылку, чтобы подчеркнуть эту мысль - синтаксис Smarty - это синтаксис Smarty.)

См. Раздел о встраивании переменных в двойные кавычки , которые должны дать представление о том, как выполнитьзадание.(Подсказка: для этого случая необходимо использовать обратные галочки внутри кавычек).

Счастливого кодирования.

...