我遇到了Smarty 2.6.9缓存的问题,我有一个名为confirmation.tpl
的2个模板,它们都存储在我的代码库的不同目录中。
但是,编译它们时会在/cache/gb/
目录中编译。对于这两个模板,我只想阻止编译,因此我尝试使用force_compile
成员变量,但这根本没有效果,模板一直被缓存。
这提出的问题是在相同的页面上调用了两个confirmation.tpl
模板(通过单独的代码),因此一个模板正在用于这两个模板并导致我问题。
有没有办法阻止以这种方式编译和缓存此模板?
我正在传递一个标志,仅为“confirmation.tpl”模板设置“no_compile”。
$this->obj = new Smarty;
$this->obj->caching = false;
$this->obj->cache_lifetime = 10;
$this->obj->compile_check = true;
$this->obj->template_dir = $this->tpl_path;
if ($this->no_compile) {
$this->obj->force_compile = false;
$this->obj->compile_check = false;
}
答案 0 :(得分:2)
您可以在display / fetch中使用不同的$compile_id
设置来获取磁盘上的不同物理文件(尽管我认为Smarty应根据路径自动处理此问题)。还可以为compile_id
语句设置{include}
。
我不确定您粘贴的代码含义,但是您需要启用force_compile
以使Smarty在每次展示时重新生成模板(它已经显示)默认为false
。