如何在Smarty中使用变量变量?

时间:2018-06-25 12:56:10

标签: php smarty

我想在smarty中使用变量变量。我知道我们可以在PHP中使用它。但是我找不到在Smarty模板文件中实现相同效果的任何方法。请考虑以下情形。

我有多个变量,这些变量从PHP文件传递到Smarty tpl文件。所有这些变量名称都有一些相似的模式。例如$test_1$test_2$test_3等。

这就是方法,实际上我正在尝试实现它。在这里,$COUNTER代表1、2、3 ...

 {$SELECTED_VALUE = "test_{$COUNTER}"}
 {$$SELECTED_VALUE|@print_r}

但是当我尝试将其打印出来时,它给了我错误

Syntax Error in template "test.tpl" on line 127 "{$$SELECTED_VALUE|@print_r}" - Unexpected "$", expected one of: "{" , "identifier"

现在,在PHP中,我可以使用双$$符号来获取这些变量的值。但是我无法在智能的tpl文件中找到任何方法来实现相同的目的。

我已经浏览了这些链接,但无法理解其中的任何内容。

Variable Variable in Smarty Templates

Dynamics variables in smarty in loop

如果可以的话,请在这里引导我。

3 个答案:

答案 0 :(得分:0)

您可以在下面的tpl文件中编写循环     例如,假设$ count = 10;

     {for $foo=1 to $count}
          <li>{$foo}</li>
     {/for}

答案 1 :(得分:0)

好吧,看来我已经找到了解决方案。如上所述,我已经动态创建了这些文件并将它们$test_1$test_2$test_3,..分配给了smarty tpl文件。因此,为了动态地使用这些变量,我采用了以下方法。

{for $counter=1 to $total}
      {$test_{$counter}}
 {/for}

感谢帮助。

答案 2 :(得分:0)

这应该可以满足您的需求:

{$x = ['foo', 'bar']}
{${$x}|print_r}