[英]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.