我知道我们应该避免使用任何模板引擎中的{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
答案 0 :(得分:4)
您可以使用get_template_vars,只需确保使用$this
代替$smarty
$this->get_template_vars('foo')
重写你正在做的事情会更好一点
编辑:
在您的示例中,您可以执行类似
的操作$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')