2009-11-27 53 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

相关问题