2012-09-06 120 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有一個功能豐富的插件系統,允許您從演示中分離邏輯