2012-09-06 70 views
0

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

{$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->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}中是$天,然后在Smarty中是$天< 1?

+0

Smarty用于表示。在“常规”php脚本中进行所有计算,并将计算出的值传递给Smarty。这是(在我看来)使用模板引擎的正确方法。 –

回答

0

你可以使用内联PHP Smarty的分配和包装变量放在括号:

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

<! - 开始新&视频图标 - > {assign var =“startDate”value = $ smarty.now} {assign var =“endDate”value = $ listing.activation_date | strtotime} {math assign = “diff”equation =“(st - en)”st = $ startDate en = $ endDate} {if $ diff <86400} {/ if} – Alouty

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有一个功能丰富的插件系统,允许您从演示中分离逻辑