2011-08-03 6 views
1

저는 현재 ZF 기반 CMS를 작성 중입니다. 현재 Zend_Navigation 오브젝트를 캐시하고 있으며, renderMenu()으로 렌더링 된 html도 캐싱 중입니다. 그래서 메뉴 변경, 나는 관련 행동의 다음 줄에 전화를해야 할 때마다 순간에 : 처리캐시 지우기 코드를 넣을 곳

 $cache = Zend_Registry::get("cache"); 
     $cache->remove("menu"); 
     $frontcache = Zend_Registry::get("frontcache"); 
     $frontcache->remove("menuhtml"); 
나는 siteController 메뉴 구조에 대한 변경 사항을 처리해야

및 pageController를 추가/편집/개별 페이지를 삭제하므로이 두 컨트롤러의 작업에 코드가 사용됩니다.

이 코드를 호출 할 수있는 단일 메서드에 넣고 싶지만, 가장 적절한 장소는 어디입니까? 액션 도우미? siteController에 대한 부모 클래스 & pageController? 컨트롤러를 결합해야합니까? 또는 다른 것?

답변

2

액션 도우미 (http://framework.zend.com/manual/en/zend.controller.actionhelpers.html)를 사용해 보셨습니까? 이렇게하면 각 컨트롤러가 여전히 호출 할 수있는 컨트롤러와 독립적 인 장소가 제공됩니다.

+0

예, 둘러 보면서 좀 더, 특히 [this] (http://devzone.zend.com/article/3350)를 읽으면서 Action Helper가 올바른 해결책이라고 생각합니다. – ChrisA

1

서비스는 어떻습니까? application/services/Navigation.php에 저장된 Application_Service_Navigation (또는 사용하는 것은 appnamespace)이며 두 CMS 컨트롤러에서 CRUD 작업을 나타내는 인터페이스를 구현합니다. 그런 다음 내부적으로이 메소드는 설명 된대로 캐시를 사용할 수 있습니다. 컨트롤러는 서비스 메소드를 호출하고 캐시 연산을 인식하지 못합니다.

+0

어떤 방식 으로든 행동 도우미보다 서비스가 좋을까요? – ChrisA