【问题标题】:smarty - how to output the variable "{$myvar@display}"smarty - 如何输出变量“{$myvar@display}”
【发布时间】:2012-04-28 07:07:25
【问题描述】:

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

这是我的设置:

$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

【问题讨论】:

  • 为什么要使用这种疯狂的变量名?!这个约定听起来很愚蠢——尤其是因为它实际上会导致技术问题。
  • 很高兴能够改变它...但是像许多其他程序员一样,我受到了在我之前所做的程序员的传统的约束...
  • 为什么不花一天时间来更改那些蹩脚的变量名。这甚至可以用脚本来完成。

标签: php smarty3


【解决方案1】:

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

如果你在 php 代码的某个地方有访问权限,你可以输入:

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

并在 tpl 中获取 var 名称:

{$myvar{$at}display}

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

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

编辑

这对我有用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2012-02-09
    • 1970-01-01
    • 2016-10-25
    • 2011-05-04
    • 2011-05-29
    相关资源
    最近更新 更多