45

我有一个使用 Symfony 2 框架在 PHP 中开发的应用程序。我已经更改了一个 HTML 文件,但是当我刷新页面时,更改并没有反映出来。

  1. 我重新启动了服务器。没运气。

  2. 我试图从/protected/cache/页面本身中删除 Twig 文件夹。这不是加载。

如何重新加载 Twig 缓存?

笔记:

  • 我正在使用tomcat服务器进行部署。
  • 我没有在服务器上配置 Symfony 2 命令行。
  • 我是 PHP 新手。
4

8 回答 8

52

最简单的方法,输入命令:

rm -rf app/cache/*

重点是:里面的所有文件app/cache/都可以自由删除,需要的时候重新生成。

如果您真的只想清除树枝缓存:

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

替换<environment>devprodtest根据您的要求。

于 2013-05-05T17:51:22.767 回答
38

当创建一个新的 Twig_Environment 实例时,你可以传递一个选项数组作为构造函数的第二个参数。其中之一是auto_reload。使用 Twig 进行开发时,只要源代码发生更改,重新编译模板就很有用。如果您没有为auto_reload选项提供值,它将根据该debug值自动确定。

设置auto_reloadtrue

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

Twig 的开发者文档:http: //twig.sensiolabs.org/doc/api.html#environment-options

于 2013-10-23T05:52:48.587 回答
14

我遇到了类似的问题,但删除缓存文件夹对我的模板没有任何影响,我不知道为什么。现在似乎可以解决我的问题的是我的 config_dev.yml 中的以下代码:

twig:
    cache: false

也许这对你来说也是一种解决方案,这样你就不需要一直使用命令了。

参考:

TwigBundle 配置

Twig 环境选项

于 2013-11-14T14:06:37.707 回答
3

如果您使用 opcache/其他类似的缓存,删除 twig 的缓存文件夹不会刷新模板,因为 twig 缓存仅包含 .php 文件。您需要删除 twig 的缓存文件夹 + 执行 php 文件,其中包含:

opcache_reset();

于 2016-05-19T08:38:06.843 回答
3

您必须对位于 web 文件夹中的 app.php 文件进行一些更改。

改变:

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

到:

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

并根据需要清除缓存。

于 2017-11-28T13:50:42.303 回答
3

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

于 2020-11-14T10:05:57.467 回答
1

您可以添加这样的功能:

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);
}
于 2018-01-30T16:48:33.320 回答
1

opcache.validate_timestamps=0如果您使用的是 OPcache,请确保在开发环境中注释掉。

于 2018-09-15T22:34:42.000 回答