2013-09-25 38 views
0

我正在使用月份名稱在Smarty模板中填充一個簡單的HTML select列表。時間戳記對象被傳遞給模板。我希望通過時間戳月份作爲select的默認值。通過的值可以作爲int(1,2,3等等)或string(1月,2月,3月等)傳入。在Smarty中創建指定月份的時間戳

要設置默認的選定值,我需要將傳入的時間戳月份與我在模板中創建的時間戳進行比較。例如,要比較的只是當前的一個月,我會做這樣的事情:

<option {if $smarty.now|date_format:"%b" = $passedInTimestamp['month']}selected{/if}> 
    text 
</option> 

$smarty.now只會當月工作效果顯着。我的<option>標記位於for循環內,從1循環到12.我如何創建一個特定月份的時間戳與月份中的傳遞進行比較?

+0

你解決了你的問題嗎? –

+0

@FouadFodail還沒有試過。 – smilebomb

回答

1

如果我深知,這是你所需要的:

<select> 
{for $i=1 to 12} 
    <option {if '1-'|@cat:$i:'-':'Y'|date|@strtotime|date_format:"%b" == $passedInTimestamp['month']}selected{/if}> 
     {$i} 
    </option> 
{/for} 
</select> 

首先,我創建了一個日期字符串使用cat修改個月:

{'1-'|@cat:$i:'-':'Y'|date} 
// will output 
// 1-1-2013 1-2-2013 1-3-2013 .... 

然後我用strtotime修改器將其轉換to timstamp

{'1-9-2013'|@strtotime} 
// will output 1377986400 

最後我用像上面所做的那樣,將其與您在時間戳月份中傳遞的值進行比較。

+0

在你的'cat'文檔鏈接中,它們在'cat'關鍵字後面不使用'@'符號或冒號。你爲什麼在這裏? – smilebomb

+0

'@'是我習慣的壞習慣。在Smarty 2中,我們必須使用'@'將修飾符應用於數組。現在它被Smarty 3忽略。只需刪除它。 在我提供的cat鏈接中,他們在cat關鍵字之後使用冒號。請參閱'{$ articleTitle | cat:'昨天。'}'。 在Smarty中,冒號用於將參數傳遞給修飾符。 –

相關問題