我正在把一个基于ZF的CMS放在一起,目前我正在缓存我的Zend_Navigation
对象,以及renderMenu()
渲染的html。因此,目前,每当菜单更改时,我都必须在相关操作中调用以下行:
$cache = Zend_Registry::get("cache");
$cache->remove("menu");
$frontcache = Zend_Registry::get("frontcache");
$frontcache->remove("menuhtml");
我有一个siteController来处理菜单结构的更改,一个pageController来处理单个页面的添加/编辑/删除,所以代码在这两个控制器的操作中使用。
我显然想把这段代码在一个方法我可以调用,但在哪里将是最合适的地方?动作帮助器?sitcontroller &pageController吗?我应该把控制器组合起来吗?还是别的什么?
您是否考虑过使用Action Helper (http://framework.zend.com/manual/en/zend.controller.actionhelpers.html)?这将给你一个独立于控制器的地方,每个控制器仍然可以调用。
服务怎么样?Application_Service_Navigation
(或您正在使用的任何appnamespace
)存储在application/services/Navigation.php
中,实现表示这两个CMS控制器中的CRUD操作的接口。然后,这些方法可以在内部使用您所描述的缓存。控制器调用服务方法,并且不知道缓存操作