我正在处理使用Smarty的遗留代码。对于其中一个Ajax请求,我需要返回子模板的HTML代码。因此,我想将一个变量传递给子模板并将处理后的模板存储为字符串,因此可以将其传递回Ajax回调。
我不知道该怎么做。 Smarty fetch()
似乎做了类似的事情,但我无法将$myData
传递给子模板。
我想要的是:
$content = $smarty->get_template_as_string('results.tpl', $myData);
return $content;
Smarty中不存在get_template_as_string()
方法,只是作为我需要的一个例子。
答案 0 :(得分:0)
Smarty不将其数据作为数组,您需要单独分配每个变量;幸运的是,你需要做的就是一个简单的foreach
循环:
foreach ($variables as $key => $value) {
$this->assign($key, $value);
}
然后,正如您所说,fetch
将为您呈现实际模板:
$html = $this->fetch($template_file_name);
显然,你可以将所有这些包含在任何对你有意义的效用函数中。