繁体   English   中英

如何在 Symfony 2 中重新加载 Twig 缓存

[英]How reload Twig cache in Symfony 2

我有一个使用 Symfony 2 框架在 PHP 中开发的应用程序。 我更改了 HTML 文件,但刷新页面时未反映更改。

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

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

如何重新加载 Twig 缓存?

笔记:

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

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

rm -rf app/cache/*

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

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

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

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

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

或许这也是你的一个解决方案,这样你就不用一直使用命令了。

参考:

TwigBundle 配置

树枝环境选项

如果您使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM