2012-09-13 64 views
3

我在我的Zend Framework項目上實現了smarty。我通過閱讀本教程Smarty 3 extension for Zend Framework做到了這一點。我的問題是,不會爲每個模塊初始化smarty,所​​以我需要在Bootstrap初始化Smarty之前知道模塊的名稱。我可以初始化Smarty elsewere而不是Bootstrap?

以下調用不會工作,因爲getRequest()不當時存在:

Zend_Controller_Front::getInstance()->getRequest()->getModuleName() 

我知道,我可以從$_SERVER['REQUEST_URI']得到模塊的名字,但我不喜歡這樣的解決方案。

是否有另一種獲取模塊名稱的方法,或者我可以在別處初始化Smarty而不是在Bootstrap中?也許在dispatchLoopStartup()方法?

回答

0

您可以創建一個控制器插件當preDispatch觸發初始化Smarty的:

class App_Controller_Plugin_Smarty extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     if ('mymodule' === $request->getModuleName()) { 
      // Initialize Smarty 
      // ... 
     } 
    } 
} 
+0

謝謝:)。我解決了這個問題。 –

相關問題