1

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

这是我的设置:

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

在此处分配 doco

在我的模板文件中:

<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
4

1 回答 1

2

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

如果您可以访问 php 代码中的某处,则可以输入:

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

并在 tpl 中获取 var 名称:

{$myvar{$at}display}

我认为这比重新制作复杂变量名背后的逻辑更简单。

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

编辑

这对我有用

{assign var=foo value='myvar@display'}
{${$foo}}
于 2012-04-28T08:32:48.783 回答