我正在從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