2013-02-26 98 views
0

我有一個Smarty 2.6.9緩存問題,我有一個名爲confirmation.tpl的2個模板,這兩個模板都存儲在我的代碼庫的不同目錄中。阻止Smarty 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; 
    } 

回答

2

您可以顯示使用不同$compile_id設置/取來獲得磁盤上的不同物理文件(雖然我覺得應該Smarty的取決於你的路徑上自動地處理這個問題)。 compile_id也可以設置爲{include}報表。

我不確定你粘貼的代碼暗示了什麼,但是你會打開force_compile讓Smarty在每次顯示時都重新生成模板(默認爲false)。

+0

我想我可能會吠叫錯誤的樹。我的問題是,當我清除所有'confirmation.tpl.php'文件的編譯目錄並刷新文件返回的頁面時,_but只有一個文件返回_,而我認爲應該有兩個文件(因爲有兩個'confirmation.tpl'在頁面上調用Smarty模板)。 – crmpicco 2013-02-26 15:26:31

+0

對於那些在未來尋找這個,這是我做的:'//$ this-> obj是Smarty類的一個實例 $ compile_id = md5(__ METHOD__); $ output = $ this-> obj-> fetch($ top_tpl_file,null,$ compile_id,$ display);' – crmpicco 2013-02-27 09:47:08