smarty code - 访问{php}标签内的变量

时间:2010-12-03 17:53:59

标签: php variables smarty

我知道我们应该避免使用任何模板引擎中的{php}标记,但是,我们假设它是这种情况下的唯一方法。

考虑到这一点,我想请求一些帮助,以便为php消费抓住聪明的字符串。

在这种情况下,我想在srtstr php函数中访问$ result.domain。

我做错了什么?

{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 个答案:

答案 0 :(得分:4)

您可以使用get_template_vars,只需确保使用$this代替$smarty

$this->get_template_vars('foo')

smarty plugin though

重写你正在做的事情会更好一点

编辑:

在您的示例中,您可以执行类似

的操作
$result = $this->get_template_vars('result');
$domainName = $result.domain;

答案 1 :(得分:0)

不要{PHP}标签引用PHP变量,而不是通过$smarty->assign设置的变量吗?

也许您正在尝试访问通过$smarty->assign设置的{PHP}内的内容?

尝试访问在调用$smarty->dispay()的.php文件中命名的对象。

答案 2 :(得分:0)

$this对我们不起作用,我们最终使用$GLOBALS变量得到它:

$variable= $GLOBALS['smarty']->getTemplateVars('variable');

答案 3 :(得分:0)

在smarty的更高版本中,您必须使用$ template,而不是$ this。

例如:

$template->get_template_vars('foo')