簡體   English   中英

如何在Smarty中合並兩個字符串?

[英]How to combine two string in 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...

我只使用過一些小巧的技巧,但我認為,如果您在串聯中加上反引號,那么它將正確評估它們。 示例如下:

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

還有內置的分配功能,該功能也可能會有用: http : //www.smarty.net/docsv2/zh/language.custom.functions.tpl#language.function.assign

最后,如果所有其他方法均失敗,請在php中進行concat並將其分配給單個變量,然后將其傳遞給模板。


編輯,忽略以上建議,我認為您應該使用以下語法:

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

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

如果您將其傳遞給函數,則可以進行捕獲或分配

{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 \\ plugins \\ function.concat.php

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

在.tpl代碼上:

{concat 1 =“ string1” 2 =“ second” 3 =“另一個字符串”}

這是因為Smarty 不了解PHP語法 它使用此處描述的自己的語法,並與此處的PHP語法進行快速比較。 (我加入了后一個鏈接來強調這一點-Smarty語法是Smarty語法。)

請參閱有關在雙引號中嵌入vars的部分,該部分應給出如何完成任務的想法。 (提示:在這種情況下,必須在引號使用反引號)。

快樂的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM