[英]How reload Twig cache in Symfony 2
我有一個使用 Symfony 2 框架在 PHP 中開發的應用程序。 我更改了 HTML 文件,但刷新頁面時未反映更改。
我重新啟動了服務器。 沒運氣。
我試圖從/protected/cache/
頁面本身中刪除 Twig 文件夾。 這不是加載。
如何重新加載 Twig 緩存?
筆記:
最簡單的方法,輸入命令:
rm -rf app/cache/*
重點是: app/cache/
所有文件都可以自由刪除,需要的時候重新生成。
如果您真的只想清除樹枝緩存:
rm -rf app/cache/<environment>/twig
根據您的要求將<environment>
替換為dev
、 prod
或test
。
創建新的 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
或許這也是你的一個解決方案,這樣你就不用一直使用命令了。
參考:
如果您使用 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.