2009-11-27 122 views

回答

9

是的,可以使用Zend_Registry。你可以做的另一件事是註冊一個預調度器插件,任何控制器接收之前,這將增加該tenantID作爲一個請求參數:

class YourApp_Plugin_IdWriter extends Zend_Controller_Plugin_Abstract { 
    public function preDispatch(Zend_Controller_Request_Abstract $request) { 
     $request->setParam('tenantID', ...); 
    } 
} 

你需要在你的application.ini註冊插件:

resources.frontController.plugins.access = "YourApp_Plugin_IdWriter" 
0

我認爲一個剛剛設置變量的前端控制器插件的開銷太大。

一個更簡單的方法是創建您的基本動作控制器並從其繼承所有其他人。

class MyCompany_Controller_Action extends Zend_Controller_Action 
{ 
    public function preDispatch() 
    { 
     parent::preDispatch(); 

     $this->getRequest()->setParam('tenantId', 42); 
    } 
} 

您有所有的控制器從這個基地之一的繼承另一個間接效益,因此更容易補充說,應該從所有使用常見的邏輯。

+0

這是如何從所有其他控制器訪問,但? – 2012-10-25 21:44:07

+0

您的控制器將繼承自'MyCompany_Controller_Action',因此所有人都可以訪問參數。 – 2012-10-26 10:26:23

相關問題