分配变量时的聪明问题

时间:2011-05-19 06:29:38

标签: php smarty

Fatal error: Smarty error: [in rezultati/index.tpl line 24]: syntax error: $smarty. is an unknown reference (Smarty_Compiler.class.php, line 2164) in D:\HTTPSERVER\wwwroot\kajak\sistem\smarty\libs\Smarty.class.php on line 1093


{assign var="file" value="{$smarty.const.CMS_URL_POT}/moduli/rezultati/files/{$rezultat.datoteka|ss}"}
            {if file_exists($file)}
                <a href="{$file}" target="_blank">{$smarty.const.REZULTATI_025}</a> 
            {/if}

为什么这无效:{assign var="file" value="{$smarty.const.CMS_URL_POT}$rezultat.datoteka|ss。使用assign时无法识别|ss

2 个答案:

答案 0 :(得分:2)

在变量周围使用反引号(而不是大括号):

`$smarty.const.CMS_URL_POT`

来自manual

  

Smarty会认出已分配   嵌入“双引号”的变量   只要变量名包含   只有数字,字母,under_scores   和括号[]。请参阅命名了解更多信息   细节。

     

例如,使用任何其他字符   然后是.period或$ object&gt;引用   变量必须被包围   反引号。

答案 1 :(得分:0)

如果您希望将常量视为$ smarty变量的一部分,也许您应该尝试使用backticks,以此为例:

{assign var="myvar" value="20"}
{* myCONST = 'test'  - assuming you have a const defined somewhere *}

{assign var="file" value="(`$smarty.const.myCONST`/moduli/rezultati/files/`$myvar`)"}
{$file} {* should return "test/moduli/rezultati/files/20 *}

不完全确定你想要达到的目标,但我希望这能让你有所了解。