Использование умной переменной foreach в тегах php - PullRequest
2 голосов
/ 28 июля 2010

У меня следующий код 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], чтобы получить smarty переменные внутри тегов {php}, но, похоже, это не работает с foreach.

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

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

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

на

$ myfieldid = $ v ['fieldid'];

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

1 голос
/ 14 марта 2013

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

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

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

ИЛИ:

$myfieldid = $this->_tpl_vars['v']['fieldid'];
0 голосов
/ 28 июля 2010

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

...