在php标签中使用smarty foreach变量

时间:2010-07-28 01:38:34

标签: php smarty

我有以下聪明的代码:

  {foreach from=$additional_fields item=v}
    {if $v.fieldid eq 5}
       {php}
         // several pounds of php code here
         $myfieldid = {$v.fieldid}; // this is wrong
       {/php}
    {/if}
  {/foreach}

我正在尝试使用我的自定义php代码获取当前字段ID,换句话说{$ v.fieldid}。我发现一些帖子引用了$ this-> _tpl_vars [somevar]来获取{php}标签内部的智能变量,但这似乎不适合foreach。

我意识到在smarty中使用{php}标签对于整个聪明的概念是违反直觉的,并且完全蹩脚,但我有我的理由。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

更改$ myfieldid = {$ v.fieldid}

$ myfieldid = $ v ['fieldid'];

顺便说一句,你所做的就是邪恶!

答案 1 :(得分:1)

虽然这是一个古老的主题,但我设法结合了Bingy的一些建议来解决它。

首先,使用get_template_vars将smarty变量导入php,然后获取数组值。

$v = $this->get_template_vars('v'); 
$myfieldid = $v['fieldid'];

OR:

$myfieldid = $this->_tpl_vars['v']['fieldid'];

答案 2 :(得分:0)

如果您已经在智能模板中使用PHP,为什么不将foreach实现为PHP循环而不是智能循环?