smarty - 如何输出变量“{$ myvar @ display}”

时间:2012-04-28 07:07:25

标签: php smarty3

我似乎无法找到一种方法来逃避智能变量输出块中的“@”符号。

这是我的设置:

$data = array("myvar@display"=>4534534);
$smarty->assign($data); 

Assign doco here

在我的模板文件中:

<body>
 {$myvar@display}
</body>

输出:

Message: Undefined property: Smarty_Variable::$display

任何想法如何在不改变“@”符号的情况下显示它(我无法修改它,因为它是整个应用程序中使用的约定,我无法控制它)

运行LAMP 5.2.17,Smarty 3


PS我试过这个没有成功......

{assign var=jason value="$myvar@display"}{eval var=$jason}

输出

4534534@display

1 个答案:

答案 0 :(得分:2)

我用smarty 3看到的唯一方法(禁用标签{php})是分配一个新变量。

如果您在php代码中有访问权限,可以输入:

$smarty->assign('at','@');

并在tpl中获取var名称:

{$myvar{$at}display}

我认为这比复制变量名称背后的逻辑更简单。

或者,您可以尝试启用标签{php}并获取私有智能数组的索引。

修改

这对我有用

{assign var=foo value='myvar@display'}
{${$foo}}