如何在symfony2中重新加载twig缓存

时间:2013-05-05 17:03:06

标签: php symfony twig

我是PHP的新手,我有一个用PHP和symfony2框架开发的应用程序。 我已经更改了html文件,当我刷新页面时,更改没有反映出来。

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命令行。

8 个答案:

答案 0 :(得分:41)

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

rm -rf app/cache/*

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

如果你真的只想清除twig缓存:

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

根据您的要求,将<environment>替换为devprodtest

答案 1 :(得分:36)

创建新的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

答案 2 :(得分:12)

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

twig:
    cache: false

也许这也是一个解决方案,因此您无需一直使用该命令。

参考文献:

TwigBundle Configuration

Twig Environment Options

答案 3 :(得分:3)

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

opcache_reset();

答案 4 :(得分:2)

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

变化:

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

为:

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

并根据需要清除缓存。

答案 5 :(得分:1)

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

答案 6 :(得分: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);
}

答案 7 :(得分:0)

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