将smarty var传递给php

时间:2012-09-06 06:33:36

标签: php smarty

我有Smarty模板文件。从Smarty传递到php时,$ listing.activation_date为null。任何解决方案?

{$listing.activation_date}
{php}
$startDate = strtotime('now');

$interval = $startDate - strtotime($this->get_template_vars('$listing.activation_date'));

{$listing.activation_date} = 2012-Sep-05

我已将$ smarty更改为$ this以防止出现非对象错误。

$this->assign("interval", $interval); 
$days = floor($this/ (60 * 60 * 24)); {/php} 
{if $days < 1} <img src=" {$GLOBALS.site_url}/templates/Natural/main/images/new.gif"/> 
{/if} 

{php}中的$ days是否正确,然后是Smarty $ days&lt; 1?

2 个答案:

答案 0 :(得分:0)

您可以使用内联PHP Smarty赋值并将该变量包装到括号中:

{php}
    $startDate = strtotime('now');
    $interval = $startDate - strtotime('{$listing.activation_date}');
    $smarty->assign("interval", $interval);
{/php}

答案 1 :(得分:0)

在Smarty3中,您不需要{php}:

{$interval = $smarty.now - {$listening.activation_date|strtotime}}

由于Smarty2不允许“复杂”的内联表达,你必须“愚蠢”:

{assign var="now" value=$smarty.now}
{assign var="then" value=$listening.activation_date|strtotime}
{assign var="interval" value=$now-$then}

每当你发现自己使用{php}时,你就会做一些“错误”的事情。 Smarty有一个功能丰富的插件系统,允许您从演示文稿中分离逻辑