1

我现在正在整理一个基于 ZF 的 CMS,并且目前正在缓存我的Zend_Navigation对象,以及由renderMenu(). 所以目前,每当菜单更改时,我必须在相关操作中调用以下行:

        $cache = Zend_Registry::get("cache");
        $cache->remove("menu");
        $frontcache = Zend_Registry::get("frontcache");
        $frontcache->remove("menuhtml");

我有一个 siteController 来处理对菜单结构的更改,还有一个 pageController 来处理单个页面的添加/编辑/删除,因此代码用于这两个控制器的操作中。

我显然想把这段代码放在一个我可以调用的方法中,但是哪里是最合适的地方呢?行动助手?siteController 和 pageController 的父类?我应该结合控制器吗?或者是其他东西?

4

2 回答 2

2

您是否考虑过使用 Action Helper ( http://framework.zend.com/manual/en/zend.controller.actionhelpers.html )?这将为您提供一个独立于您的控制器的地方,每个控制器仍然可以调用。

于 2011-08-03T13:56:25.030 回答
1

服务怎么样?Application_Service_Navigation(或appnamespace您正在使用的任何东西)存储在 中application/services/Navigation.php,实现表示这两个 CMS 控制器中的 CRUD 操作的接口。然后在内部,这些方法可以使用您所描述的缓存。控制器调用服务方法并且不知道缓存操作。

于 2011-08-03T11:05:16.233 回答