2010-12-03 85 views
1

我知道我们应该避免任何模板引擎中的{php}标签,但我们假设它是这种情况下唯一的方法。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

+0

从外观上来看,你正在试图做可以在不`{} PHP来实现什么`块,通过简单循环`$ results.regoptions`并在调用`$ smarty-> display()`之前进行字符串替换。 – eykanal 2010-12-03 19:13:52

回答

4

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

$this->get_template_vars('foo') 

这将是一个更好的主意来重写你是什么做为smarty plugin though

编辑:

在您的例子,你可以做这样的事情

$result = $this->get_template_vars('result'); 
$domainName = $result.domain; 
+0

以及这件事情会是什么?我的意思是,我试过:“$ result.domain”和“result.domain” - 没有运气。 – MEM 2010-12-03 18:07:50

0

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

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

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

0

$this不为我们工作,我们终于得到了使用它$GLOBALS变量是这样的:

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