2014-09-18 3 views
1

원본 이미지가 삭제되거나 업데이트 될 때 캐시 된 이미지 (LiipImagineBundle로 생성됨)를 제거하려고합니다. 나는 그것이 CacheManager (https://github.com/liip/LiipImagineBundle/issues/132) 을 사용하여 수행 할 수 있음을 이미 알아 냈습니다. 문제는 정확하게 사용하는 방법을 찾아 낼 수 없다는 것입니다. 나는 사람이 어떻게 나를 설명 할 수 있다면 정말 감사하겠습니다 뭔가Symfony liipImagine을 사용하여 캐시 된 이미지 제거

$cacheManager = new CacheManager(); 

처럼이있을 것으로 판단

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

을 : 그 밖의 무엇 나는이 세 가지 라인에도 불구하고 내 코드 (도서관 등)에 추가해야 할 그 일을 좀 더 자세하게 설명합니다.

답변

1

그래서, 컨트롤러, 예를 들어 : 당신은 CacheManager에서 볼 수 있듯이

/** 
* 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); 

    // ... 

} 

, 당신이 사용하고자하는 기능은 다음과 같습니다

public function remove($paths = null, $filters = null){ ... } 
  • $pathsnull 인 경우 함수는 캐시 된 imag를 제거하려고한다고 가정합니다 ALL PATHS$filters으로 해결되었습니다. $filtersnull입니다

  • 경우, 함수는 사용자가 제공 한 $paths에 대한 해당 캐시 된 이미지를 제거하려면 그 이전에 모든 필터으로 해결 된 것으로 가정합니다. $paths$filtersnull 경우

  • 는 기능을 사용하면 모든 경로와 모든 필터에 대한 해당 캐시 된 이미지를 제거 할 것으로 가정합니다. 기본적으로 모든 캐시 된 이미지.

+0

내 엔터티의 기능에서 사용할 수 있습니까? 컨트롤러에서 작동하는 것처럼 보이지만 엔터티에서이 작업을 수행하려고하면이 오류가 발생합니다. Notice : 정의되지 않은 속성 : Keliones \ MainBundle \ Entity \ Article :: $ container – Einius

+0

사용자 엔티티에 속하지 않습니다. (당신도 그것에 대한 단어 모델을 듣게 될거야). 모델/엔티티는 데이터를 보유하고 있으며 식사 준비에 필요한 모든 재료 목록과 같습니다. 그런 다음 로직 (예 : 재료를 사용하여 식사 나 조리법을 준비하는 방법을 설명하는 기능)은 엔티티 관리자 (엔티티를 관리하는 관리자 ...) 또는 컨트롤러 또는 서비스 또는 클래스에 머물러 야합니다 당신이 원하는 그. 그 말이 맞는다면 ... – Mick