2012-08-02 60 views
1

我正在一些公寓的網站上工作。Smarty替換和陣列

我有一些數據在foreach循環中分配給Smarty。

$i = 0; 
foreach ($obj2 as $array) { 
    $smarty->assign('name'.$i, $obj2[$i]['name']); 
    $smarty->assign('numbedrooms'.$i, $obj2[$i]['number_of_bedrooms']); 
    $smarty->assign('numbathrooms'.$i, $obj2[$i]['number_of_bathrooms']); 
    $smarty->assign('sqfeet'.$i, $obj2[$i]['square_feet']); 
    $smarty->assign('deposit'.$i, $obj2[$i]['deposit']); 
    $smarty->assign('rent'.$i, $obj2[$i]['rent']); 
    $smarty->assign('vacantunits'.$i, $obj2[$i]['vacant_units']); 
    $i++; 
} 

當模板被加載($smarty->display('template.tpl');)我要所有的數據經由replace是可用的(像replace:'[[lowestrate]]':{$lowestrate}(例如,從代碼)另一個塊)。

但是,由於$obj2中的物品數量可能會發生變化(目前爲3),因此我不能只說replace:'[[name1]]':{$name1}。 (更不用說需要多長時間)

此外,需要更換原因的原因是頁面內容由CMS系統通過所見即所得編輯器進行管理,編輯器可以輸入[[lowestrate]]以將其替換爲最低版本價格公寓。他們應該可以輸入[[name1]]以將其替換爲第一套公寓的名稱,或者[[numberbedrooms1]]替換爲第一套公寓的套數。

有沒有人有任何想法,我應該怎麼做呢?

+0

想到的第一件事是一個自定義插件,'preg_match'內容找到僞變量並用相應的變量值替換它們('$ smarty-> getTemplateVars()') – bububaba 2012-08-03 13:10:30

+0

爲什麼使用foreach?難道你不能將數據作爲數組發送給smarty嗎? – 2012-08-03 13:47:56

回答

0

這聽起來像你應該在PHP級別上做的工作,而不是聰明的級別。我建議你在分配給smarty之前做替換,然後發送轉換後的數組,這將會容易得多(並且更清潔imho)