防止Smarty 2模板被缓存/编译


preventing a Smarty 2 template from being cached/compiled

我有一个问题与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默认)。