2013-05-05 70 views
27

我是PHP新手,我有一个在PHP和symfony2框架中开发的应用程序。 我已经改变了html文件,当我刷新页面时,更改不反映。如何在symfony2中重新装载树枝缓存

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

+0

你有FTP访问服务器? – PMoubed 2013-05-05 18:43:06

回答

34

最简单的方式,键入命令:

rm -rf app/cache/* 

的一点是:在app/cache/所有文件可以自由取下,需要的时候进行再生。

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

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

根据您的要求通过devprod,或test更换<environment>

+0

如果您覆盖了其他包模板并希望它找到新的包,则还应该删除templates.php。 – 2015-09-05 00:49:21

27

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

设置auto_reloadtrue

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

枝条的文档开发商: http://twig.sensiolabs.org/doc/api.html#environment-options

10

我也有类似的问题,但删除缓存文件夹并没有对我的模板,我产生任何影响不知道为什么。有什么事解决我的问题,现在是我config_dev.yml下面的代码:

twig: 
    cache: false 

也许这也是你的解决方案,让您无需使用命令所有的时间。

参考文献:

TwigBundle Configuration

Twig Environment Options

+0

好主意 我有另一种情况,即树枝总是没有重新编译,有时候会忽略auto_reload。所以现在我没有缓存。 – John 2014-09-13 02:36:43

2

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

opcache_reset();

1

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

变化:

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

到:

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

,如果你想清除缓存。

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); 
}