2011-08-03 8 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) – ChrisA

1

サービスについてはどうですか? application/services/Navigation.phpに格納されているApplication_Service_Navigation(または使用しているものはappnamespace)であり、これらの2つのCMSコントローラでCRUD操作を表すインターフェイスが実装されています。内部的には、これらのメソッドは説明したようにキャッシュを使用できます。コントローラはサービスメソッドを呼び出し、キャッシュ操作を認識しません。

+0

サービスは何らかの形でヘルパーよりも優れていますか? – ChrisA

関連する問題