智能替换和阵列


Smarty replace and array

我正在为一些公寓的网站工作。

我有一些数据在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]]以将其更换为公寓1的卧室数。

有人知道我该怎么做吗?

这听起来像是你应该在PHP级别而不是智能级别做的工作。我建议您在分配给smarty之前进行替换,然后发送转换后的数组,这将更容易(更干净)