我有这个:
string {$one} = "$hello_"
string {$two} = "world"
如何从上面两个字符串变量中调用变量$hello_world
?
capture
对我不起作用。
使用Smarty v2.5
答案 0 :(得分:1)
{$foo_{$x}} // will output the variable $foo_1 if $x has a value of 1.
所以,你想要:
{${$one}{$two}}
由于不允许使用此功能,我建议使用smarty plugin来模仿您想要的行为。模板插件只是简单的php函数,通过$smarty->loadPlugin()
方法调用。
答案 1 :(得分:1)
{$ {$ foo} {$ bar}}只适用于Smarty3。在Smarty2中,您必须为此编写一个插件(或者只是搜索智能论坛,因为那里有很多解决方案......)
答案 2 :(得分:0)
Smarty 2.x不支持变量。
smarty中的变量实际上存储在smarty对象中,因此您需要在Smarty中明确支持使用方便的标准变量变量语法。
以下是Smarty 2.x中我能想到的最好成绩。它使用PHP块为您存储组合结果的值。
{assign var="one" value="hello_"}
{assign var="two" value="world"}
{assign var="hello_world" value="HELLO!"}
{php}
$varname = $this->get_template_vars('one').$this->get_template_vars('two');
$this->assign('result', $this->get_template_vars($varname));
{/php}
{$result}
然而,如上所述,您必须在$
的值的开头删除$one
。否则,您需要将其修改为以下行:
$varname = substr($this->get_template_vars('one'),1).$this->get_template_vars('two');