Использование переменной smarty foreach в тегах 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-кода, другими словами {$ v.fieldid}. Я нашел несколько сообщений, ссылающихся на $ this -> _ tpl_vars [somevar], чтобы получить гибкие переменные, находящиеся внутри тегов {php}, но это, похоже, не работает с foreach.

Я понимаю, что использование тэгов {php} в smarty противоречит интуиции всей концепции smarty и, как полностью хромой, но у меня есть причины. Спасибо за помощь!

изменить $ myfieldid = {$ v.fieldid}

в

$ myfieldid = $ v ['fieldid'];

кстати, что вы делаете, это зло!

Хотя это старые темы, мне удалось решить эту проблему, объединив немного предложений от Bingy.

Сначала вы получаете переменную smarty в php, используя get_template_vars, затем берете значение массива.

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

ИЛИ:

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

Если вы используете PHP уже в шаблоне smarty, почему бы вам не реализовать foreach как цикл PHP, а не цикл smarty?