0

PHP で動的に生成された Smarty 変数があります。name でアクセスしたいのですが、

たとえば、動的に生成された smarty 変数 {$asdf} があり、「asdf」を持つ配列があるとします。この配列を使用して {$asdf} にアクセスしたいとします。

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

//しかし、{$x} は renderend 入力を与えず、代わりに $asdf を与えます

どこが間違っていますか?

4

1 に答える 1

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}

ただし、このようなロジックをテンプレート内に配置することは一般的に悪い習慣であることを十分に強調することはできません。

于 2013-11-13T20:10:15.580 に答える