Smarty模板中的变量变量

时间:2013-11-13 19:28:26

标签: smarty

我在PHP中有一个动态生成的Smarty变量。我想用名称

访问它

比如说有一个动态生成的智能变量{$ asdf},我有一个'asdf'数组,我想使用这个数组并访问{$ asdf}。

{$asdf} prints a input element [rendered] ;  
 $array = array('asdf');
{foreach from=$array item=x}
       {$x} 
{/foreach}

//但是{$ x}没有给出渲染输入,而是给出了$ asdf

我哪里错了?

1 个答案:

答案 0 :(得分:0)

在模板文件中执行此类工作通常是不典型的。你应该尽可能地分离你的模板和逻辑 - 没有合理的场景,你不能简单地在php中为模板准备所需的变量,并将它们传递给可用结构中的模板。

那说,有可能。在模板中,传递给模板的所有变量都可以在数组Smarty::_tpl_vars中访问。在模板中,可以使用{php}{/php}标记与此数组进行交互,可以通过$this引用它 -

{php}
    $unknownValue = $this->_tpl_vars[
        $this->_tpl_vars['known_key']
    ];
    // for example...
    $this->_tpl_vars['magicalValue'] = $unknownValue;
{/php}
Magic: {$magicalValue}

但是,我不能重申,将这样的逻辑放在模板中通常是不好的做法。