2012-08-02 56 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)