Symfony使用liipImagine删除缓存的图像

时间:2014-09-18 18:47:24

标签: php symfony liipimaginebundle

我正在尝试删除或更新源图像时删除缓存的图像(使用LiipImagineBundle创建)。我已经发现可以使用CacheManager(https://github.com/liip/LiipImagineBundle/issues/132)完成它 问题是我无法弄清楚如何正确使用它。除了这三行之外,我还需要为代码添加什么(比如库):

    $cacheManager = $this->get('liip_imagine.cache.manager');
    $cacheManager->resolve($this->getRequest(),$pngPath,$filter);
    $cacheManager->remove($pngPath, $filter);

我相信应该有像

这样的东西
    $cacheManager = new CacheManager();

如果有人能够更详细地解释我如何做到这一点,我将非常感激。

1 个答案:

答案 0 :(得分:1)

所以,例如在你的控制器中:

/**
* Remove an image in the cache based on its relative path and the filter applied to it
*
* @param string $path
* @param string $filter
*
* @return void
*/
protected function removeCachedImageAction($path, $filter)
{
    $cacheManager = $this->container->get('liip_imagine.cache.manager');

    // Remove the cached image corresponding to that path & filter, if it is stored
    if ($cacheManager->isStored($path, $filter)) {
        $cacheManager->remove($path, $filter);
    }

}

/**
* An action that doesn't do much except testing the function above
*
* @param Request $request
*
* @return void
*/
protected function whateverAction(Request $request)
{
    $path = //... probably from the request
    $filter = //... probably from the request

    // Remove the cached image
    $this->removeCachedImage($path, $filter);

    // ...

}

正如您在CacheManager中所看到的,您要使用的功能是:

public function remove($paths = null, $filters = null){ ... }
  • 如果$pathsnull,则该函数假定您要删除已使用{{1}解析的所有路径的缓存图像提供。

  • 如果$filters$filters,则该函数会假定您要删除与之前已解决的null相对应的缓存图像,并且之前已使用 ALL解析过滤器

  • 如果$paths$paths$filters,则该函数假定您要删除与所有路径和所有过滤器对应的缓存图像。基本上所有的CACHED IMAGES。