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

时间:2013-02-26 14:24:07

标签: php caching smarty template-engine smarty2

我遇到了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;
    }

1 个答案:

答案 0 :(得分:2)

您可以在display / fetch中使用不同的$compile_id设置来获取磁盘上的不同物理文件(尽管我认为Smarty应根据路径自动处理此问题)。还可以为compile_id语句设置{include}

我不确定您粘贴的代码含义,但是您需要启用force_compile以使Smarty在每次展示时重新生成模板(它已经显示)默认为false