2013-11-13 4 views
0

У меня динамически сгенерированная переменная Smarty в PHP. Я хочу получить к нему доступ с именем,Переменная переменная в шаблонах Smarty

Скажем, например, есть переменная smarty {$ asdf}, которая была сгенерирована динамически, и у меня есть массив, у которого есть «asdf», я хочу использовать этот массив и получить доступ к {$ asdf} ,

{$asdf} prints a input element [rendered] ; 
$array = array('asdf'); 
{foreach from=$array item=x} 
     {$x} 
{/foreach} 

// а {$ х} не дает renderend ввод вместо этого он дает $ ASDF

, где я буду неправильно?

ответ

0

Как правило, нетипично выполнять этот тип работы в файле шаблона. Вы должны как можно больше отделить свой шаблон и логику - нет правдоподобного сценария, в котором вы не могли бы просто подготовить необходимые переменные для своего шаблона в php и передать их шаблону в пригодной для использования структуре.

Это, как можно сказать. Внутри шаблона все переменные, которые были переданы шаблону, доступны в массиве, Smarty::_tpl_vars. В шаблоне, один может взаимодействовать с этим массивом, используя {php}{/php} тегов, где можно ссылаться с помощью $this -

{php} 
    $unknownValue = $this->_tpl_vars[ 
     $this->_tpl_vars['known_key'] 
    ]; 
    // for example... 
    $this->_tpl_vars['magicalValue'] = $unknownValue; 
{/php} 
Magic: {$magicalValue} 

Я не могу подтвердить достаточно, однако, что, как правило, плохая практика, чтобы поместить такую ​​логику внутри шаблон.

Смежные вопросы