簡體   English   中英

如何在 Symfony 2 中重新加載 Twig 緩存

[英]How reload Twig cache in Symfony 2

我有一個使用 Symfony 2 框架在 PHP 中開發的應用程序。 我更改了 HTML 文件,但刷新頁面時未反映更改。

  1. 我重新啟動了服務器。 沒運氣。

  2. 我試圖從/protected/cache/頁面本身中刪除 Twig 文件夾。 這不是加載。

如何重新加載 Twig 緩存?

筆記:

  • 我正在使用 tomcat 服務器進行部署。
  • 我沒有在服務器上配置 Symfony 2 命令行。
  • 我是 PHP 新手。

最簡單的方法,輸入命令:

rm -rf app/cache/*

重點是: app/cache/所有文件都可以自由刪除,需要的時候重新生成。

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

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

根據您的要求將<environment>替換為devprodtest

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

auto_reload設置為true

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

Twig 的開發人員文檔: http : //twig.sensiolabs.org/doc/api.html#environment-options

我遇到了類似的問題,但刪除緩存文件夾對我的模板沒有任何影響,我不知道為什么。 現在似乎可以解決我的問題的是我的 config_dev.yml 中的以下代碼:

twig:
    cache: false

或許這也是你的一個解決方案,這樣你就不用一直使用命令了。

參考:

TwigBundle 配置

樹枝環境選項

如果您使用 opcache/其他類似緩存,刪除 twig 的緩存文件夾不會刷新模板,因為 twig 緩存僅包含 .php 文件。 您需要刪除 Twig 的緩存文件夾 + 執行包含以下內容的 php 文件:

opcache_reset();

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

改變:

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

到:

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

並根據需要清除緩存。

如果您使用 OPcache,請確保在開發環境中注釋掉opcache.validate_timestamps=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);
}

您可以使用 Symfony 控制台清除緩存./bin/console cache:clear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM