すべてのコントローラーで同じ 2 行が必要です。各コントローラーには独自の初期化ロジックがありますが、これらの 2 行はすべてのコントローラーで共通です。
public function init()
{
$fm =$this->_helper->getHelper('FlashMessenger');
$this->view->messages = $fm->getMessages();
}
コードの繰り返しを避けるにはどうすればよいですか?
アップデート:
OK、FlashMessenger は一例にすぎません。たとえば、'someAction' @ 'someController' を除くすべてのアクションにログ行を書き込む必要があるとします。したがって、新しい共通線はそうあるべきです。
$this->logger = new Zend_Log();
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH.'/../logs/log.txt');
$this->logger->addWriter($writer);
$this->logger->log('Some Message',Zend_Log::DEBUG);
問題は、各コントローラーのすべての init() でこれらの行を繰り返さないようにするには、これらの行をどこに配置する必要があるかということです。これらの行は、bootstrap? に配置する必要があります。その場合:「someAction」のログ行をスキップするにはどうすればよいですか。または、「BaseController」を実装して、すべてのコントローラーをそこから拡張する必要があります。もしそうなら:どうすればオートロードできますか?(致命的なエラー: クラス 'BaseController' が見つかりません) .