首页 > 解决方案 > 使用 Twig 2 删除特定的编译模板

问题描述

我有一个允许用户从 GUI 编辑特定模板文件的系统。更改模板后,该模板文件的缓存(已编译模板)已被清除。在以前版本的 Twig 中,我习惯于做类似的事情:

/**
 * @var Twig_Environment $twig
 */
$cache = $twig->getCacheFilename('path/to/template/here.html.twig');

if (file_exists($cache)) {
    unlink($cache);
}

但是,在 Twig 2 中,getCacheFilename从 Twig_Environment 中删除了。我们如何使用 Twig 2 清除特定模板的缓存?

标签: phpsymfonytwig

解决方案


我最终设法使用以下代码构造了缓存文件名:

    $mainCls = $twig->getTemplateClass($path);
    $cache = $twig->getCache(false)->generateKey($path, $mainCls);

    if (file_exists($cache)) {
        unlink($cache);
    }

不知道为什么从 API 中删除了如此重要的方法。


推荐阅读