Utilizzo di una variabile foreach Smarty all'interno di tag php

Ho il seguente codice 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} 

Sto cercando di prendere l'ID field corrente con il mio codice php personalizzato, in altre parole {$ v.fieldid}. Ho trovato alcuni post che fanno riferimento a $ this -> _ tpl_vars [somevar] per get variables smarty quando sono all'interno dei tag {php}, ma non sembra funzionare con foreach.

Mi rendo conto che usare i tag {php} in smarty è contro-intuitivo per l'integer concetto di smarty e mi piace totalmente zoppo, ma ho le mie ragioni. Grazie per l'aiuto!

cambia $ myfieldid = {$ v.fieldid}

a

$ myfieldid = $ v ['fieldid'];

a proposito, quello che stai facendo è il male!

Sebbene si tratti di argomenti vecchi, sono riuscito a risolverlo unendo un po 'di suggerimenti di Bingy.

Per prima cosa prendi la variabile smarty in php usando get_template_vars e poi prendi il valore dell'arrays.

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

O:

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

Se stai utilizzando PHP già in un model smarty, perché non implementare foreach come loop PHP e non smarty loop?