我正在从Zend框架中获取它的tenantID(mod_rewrite - > index.php - >将它与数据库匹配)中的多租户应用程序。Zend Framework - 将变量传递给每个控制器
我的问题是 - 我如何设置这个变量(tenant id)可用于每个控制器?
Leonti
我正在从Zend框架中获取它的tenantID(mod_rewrite - > index.php - >将它与数据库匹配)中的多租户应用程序。Zend Framework - 将变量传递给每个控制器
我的问题是 - 我如何设置这个变量(tenant id)可用于每个控制器?
Leonti
是的,可以使用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"
我认为Zend_Registry可能是要走的路。 http://framework.zend.com/manual/en/zend.registry.html 这是正确的做法吗?
Leonti
我认为一个刚刚设置变量的前端控制器插件的开销太大。
一个更简单的方法是创建您的基本动作控制器并从其继承所有其他人。
class MyCompany_Controller_Action extends Zend_Controller_Action
{
public function preDispatch()
{
parent::preDispatch();
$this->getRequest()->setParam('tenantId', 42);
}
}
您有所有的控制器从这个基地之一的继承另一个间接效益,因此更容易补充说,应该从所有使用常见的逻辑。
这是如何从所有其他控制器访问,但? – 2012-10-25 21:44:07
您的控制器将继承自'MyCompany_Controller_Action',因此所有人都可以访问参数。 – 2012-10-26 10:26:23