код smarty - доступ к переменным внутри тега {php} - PullRequest
1 голос
/ 03 декабря 2010

Я знаю, что мы должны избегать тега {php} внутри любого шаблонизатора, но все же давайте предположим, что это единственный способ в этом случае.

Учитывая это, я хотел бы попросить некоторую помощь, чтобызахватить smarty строку для потребления php.

В этом случае я хотел бы получить доступ к $ result.domain внутри функции srtstr php.

Что я делаю неправильно?

{foreach key=period item=regoption from=$result.regoptions}
{if $regoption.$domain}
{if $domain eq "transfer"}
{php}
   $domainName = $result.domain;
   $tld = strstr($domainName, '.');
{/php}

{if $tld eq '.gt'}
   <p>Something</p>
{else}
<option value="{$period}">{$period} {$LANG.orderyears} @ {$regoption.$domain}</option>
{/if}
{/if}
{/if}
{/foreach}

Заранее спасибо,MEM

Ответы [ 4 ]

4 голосов
/ 03 декабря 2010

Вы можете использовать get_template_vars , просто убедитесь, что вы используете $this вместо $smarty

$this->get_template_vars('foo')

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

EDIT:

В вашем примере вы могли бы сделать что-то вроде

$result = $this->get_template_vars('result');
$domainName = $result.domain;
0 голосов
/ 11 июня 2018

В более поздних версиях smarty вы должны использовать $ template вместо $ this.

Например:

$template->get_template_vars('foo')
0 голосов
/ 07 декабря 2017

$this у нас не работает, мы наконец получили его, используя $GLOBALS переменную, подобную этой:

$variable= $GLOBALS['smarty']->getTemplateVars('variable');
0 голосов
/ 03 декабря 2010

Теги {PHP} не ссылаются на переменные PHP, а не на переменные, заданные $smarty->assign?

Возможно, вы пытаетесь получить доступ к чему-то внутри {PHP}, который вы установили через $smarty->assign?

Попробуйте получить доступ к объекту, как он назван в вашем файле .php, который вызывает $smarty->dispay().

...