У меня есть следующий код 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?