2010-07-28 26 views
2

我有以下的Smarty代碼:使用PHP代碼中的智者的foreach變量

{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} 

我試圖抓住當前域ID與我自定義的PHP代碼,換句話說{$ v.fieldid} 。我發現一些引用$ this - > _ tpl_vars [somevar]的帖子可以在{php}標籤內獲得smarty變量,但這似乎不適用於foreach。

我意識到,在smarty中使用{php}標籤對整個smarty概念是反直覺的,而且完全是蹩腳的,但我有我的理由。謝謝您的幫助!

回答

2

變化$ myfieldid = {$ v.fieldid}

$ myfieldid = $ V [ 'fieldid'];

順便說一句,你在做什麼是邪惡的!

+1

純潔的邪惡! Bingy,那在php標籤裏面沒用。在你的例子中,php正在尋找一個名爲$ v的數組,但$ v是一個聰明的變量,所以它在php世界中並不存在。 (還是)感謝你的建議。 – Banjer 2010-07-28 14:15:10

+0

所以基本上這是錯誤的。 -1。 – 2015-03-05 15:59:30

0

如果您已經在smarty模板中使用PHP,爲什麼不將foreach實現爲PHP循環而不是smarty循環?

+0

還有就是裏面的foreach一堆智者代碼。我簡化了這個問題的代碼。 @Bingy - 會嘗試你的提示,並在今天晚些時候回覆你。 – Banjer 2010-07-28 13:16:29

1

雖然這是一個古老的話題,但我設法通過結合Bingy的一些建議來解決它。

首先你使用get_template_vars獲取smarty變量到php中,然後獲取數組值。

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

OR:

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