0

我对 Smarty 2.6.9 缓存有疑问,我有 2 个模板调用confirmation.tpl,它们都存储在我的代码库的不同目录中。

但是,当它们被编译时,它们会被编译到一个/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;
    }
4

1 回答 1

2

您可以$compile_id在显示/获取中使用不同的设置来获取磁盘上的不同物理文件(尽管我认为 Smarty 应该根据路径自动为您处理这个)。compile_id也可以为{include}语句设置。

我不确定您粘贴的代码意味着什么,但您需要打开force_compileSmarty 以在每次显示模板时重新生成模板(false默认情况下)。

于 2013-02-26T14:51:53.867 回答