2013-05-05 71 views
27

我是PHP新手,我有一個在PHP和symfony2框架中開發的應用程序。 我已經改變了html文件,當我刷新頁面時,更改不反映。如何在symfony2中重新裝載樹枝緩存

01. I restarted the server No luck.

02. I tried to remove the twig folder from /protected/cache/ page it self not loading.

請告知,我使用Tomcat服務器來部署。

注意:我沒有在服務器上配置symfony2命令行。

+0

你有FTP訪問服務器? – PMoubed 2013-05-05 18:43:06

回答

34

最簡單的方式,鍵入命令:

rm -rf app/cache/* 

的一點是:在app/cache/所有文件可以自由取下,需要的時候進行再生。

如果你真的想只清除樹枝緩存:

rm -rf app/cache/<environment>/twig 

根據您的要求通過devprod,或test更換<environment>

+0

如果您覆蓋了其他包模板並希望它找到新的包,則還應該刪除templates.php。 – 2015-09-05 00:49:21

27

當創建一個新的Twig_Environment實例時,可以傳遞一個選項數組作爲構造函數的第二個參數。其中之一是auto_reload。使用Twig進行開發時,每當源代碼更改時重新編譯模板都很有用。如果您沒有爲auto_reload選項提供值,則會根據debug值自動確定。

設置auto_reloadtrue

$twig = new Twig_Environment($loader, array('auto_reload' => true)); 

枝條的文檔開發商: http://twig.sensiolabs.org/doc/api.html#environment-options

10

我也有類似的問題,但刪除緩存文件夾並沒有對我的模板,我產生任何影響不知道爲什麼。有什麼事解決我的問題,現在是我config_dev.yml下面的代碼:

twig: 
    cache: false 

也許這也是你的解決方案,讓您無需使用命令所有的時間。

參考文獻:

TwigBundle Configuration

Twig Environment Options

+0

好主意 我有另一種情況,即樹枝總是沒有重新編譯,有時候會忽略auto_reload。所以現在我沒有緩存。 – John 2014-09-13 02:36:43

2

如果您正在使用opcache /其他類似的高速緩存,刪除樹枝的緩存文件夾不會刷新模板,因爲樹枝緩存只包含.php文件。 你需要刪除樹枝的緩存文件夾+執行php文件,其中包含:

opcache_reset();

1

您必須對位於Web文件夾中的app.php文件進行一些更改。

變化:

$kernel = new AppKernel('prod', false);  

到:

$kernel = new AppKernel('prod', true); 

,如果你想清除緩存。

0

您可以添加這樣的函數:

public function renderView($view, array $parameters = array()) 
{ 
    $loader = new \Twig_Loader_Filesystem($this->container->getParameter("template_path")); 
    $twig = new \Twig_Environment($loader, array('auto_reload' => true, 
     'cache' => false 
    )); 

    /////////////////////add a translate filter/////////////////////// 
    $getTextdomain = new \Twig_SimpleFilter('trans',function ($string){ 
     return $this->container->get('translator')->trans($string); 
    }); 

    $twig->addFilter($getTextdomain); 
    ////////////////////////////////////////////////////////////////// 

    ///////////////////////////Add an extension twig////////////////// 
    $twig->addExtension(new Extension()); 
    ////////////////////////////////////////////////////////////////// 

    return $twig->render($view, $parameters); 
}