我似乎无法找到一种方法来逃避智能变量输出块中的“@”符号。
这是我的设置:
$data = array("myvar@display"=>4534534);
$smarty->assign($data);
在我的模板文件中:
<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
答案 0 :(得分:2)
我用smarty 3看到的唯一方法(禁用标签{php})是分配一个新变量。
如果您在php代码中有访问权限,可以输入:
$smarty->assign('at','@');
并在tpl中获取var名称:
{$myvar{$at}display}
我认为这比复制变量名称背后的逻辑更简单。
或者,您可以尝试启用标签{php}并获取私有智能数组的索引。
修改
这对我有用
{assign var=foo value='myvar@display'}
{${$foo}}