我现在正在组建一个基于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?我应该组合控制器吗?或其他什么?
答案 0 :(得分:2)
您是否考虑过使用动作助手(http://framework.zend.com/manual/en/zend.controller.actionhelpers.html)?这将为您提供一个独立于您的控制器的位置,每个控制器仍然可以调用它。
答案 1 :(得分:1)
服务怎么样?存储在Application_Service_Navigation
中的appnamespace
(或您正在使用的application/services/Navigation.php
),实现了表示这两个CMS控制器中的CRUD操作的接口。然后在内部,这些方法可以使用您所描述的缓存。控制器调用服务方法,并且不知道缓存操作。