【问题标题】:Smarty replace and arraySmarty 替换和排列
【发布时间】:2012-08-02 17:20:37
【问题描述】:

我正在为一些公寓设计一个网站。

我有一些数据在 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 的卧室数量。

有人知道我应该如何去做吗?

【问题讨论】:

  • 首先想到的是一个自定义插件,preg_matching 内容以查找伪变量并将它们替换为相应的变量值 ($smarty->getTemplateVars())
  • 为什么是foreach?您不能将数据作为数组发送到 smarty 吗?

标签: php arrays smarty


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    相关资源
    最近更新 更多