2011-09-10 6 views
2

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

을하지만 그때는 적절하게 평가합니다 역 따옴표로 연결을 둘러싸고 경우 나는 생각한다. 예 아래 모든 다른 PHP에서 CONCAT을하고 하나의 변수 것을 통과에 할당 실패 할 경우 http://www.smarty.net/docsv2/en/language.custom.functions.tpl#language.function.assign

마지막 :

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

도 유용 할 수도 기능을 내장 할당있다 템플릿에.


편집, 위의 제안을 무시하고, 나는 다음과 같은 구문을 사용해야한다고 생각 : 멋지 는 PHP 구문을 이해하지 않기 때문에

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

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

+0

고마워요. 역 따옴표를 추가해도 도움이되지 않습니다 ... 그 오류가 같은 오류를 보여줍니다 ... – user861587

+0

smarty의 현재 버전은 v3이고, 그 버전은 v2의 문서입니다. –

+0

v3의 경우와 거의 같습니다. http://www.smarty.net/docs/en/language.syntax.quotes.tpl – grahamrb

0

그것은이다. 그것은 자신의 구문을 described here으로 사용하고 신속하게 PHP syntax here과 비교합니다. (포인트를 보강하기 위해 후자의 링크를 포함 시켰습니다 - Smarty 구문은 Smarty 구문입니다.)

작업을 수행하는 방법에 대한 아이디어가있는 embedding vars in double quotes 섹션을 참조하십시오. (힌트 :이 경우 백틱은 안에 따옴표를 사용해야합니다).

해피 코딩.

3

당신은 당신이 캡처을하거나 내가 함수에 매개 변수에 수정을 사용하여 시도하지 않은

{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

이 코드를 발견하고

나를 위해 위치 잘 작동 한 유식 \ 플러그인 \ function.concat.php .tpl 코드에

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

:

{concat 1="string1" 2="second" 3="an other string"}