我有一个问题与Smarty 2.6.9缓存,我有一个名为confirmation.tpl
的2个模板,它们都存储在我的代码库中的不同目录。
然而,当它们被编译时,它们是在/cache/gb/
目录中编译的。对于这两个模板,我只想防止编译,因此我尝试使用force_compile
成员变量,但是这根本没有影响,模板始终缓存。
这呈现的问题是两个confirmation.tpl
模板都被调用(通过单独的代码)在相同的页面上,所以一个模板被用于两者,并导致我的问题。
是否有一种方法,我可以防止这个模板被编译和缓存以这种方式?
我正在传递一个标志,通过设置"no_compile"为"确认"。tpl"模板。
$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;
}
您可以在display/fetch中使用不同的$compile_id
设置来获取磁盘上不同的物理文件(尽管我认为Smarty应该根据路径自动为您处理此操作)。compile_id
也可以为{include}
语句设置。
我不确定你所粘贴的代码意味着什么,但你会想要打开force_compile
,使Smarty重新生成模板每次它显示(它是false
默认)。