currelly我在一些項目上工作(基於ZF)和我想知道是否有可能關閉一個或多個模塊。關閉我的意思是ZF不會加載它。Zend Framework - 如何禁用一個或多個模塊
更準確地說,我想關閉其中一個正在退出的應用程序模塊。
讓我說我的應用程序包含一些由sombody其他編寫的模塊,我的時間beeing 我不想使用它。 我希望這個問題對你有意義。
-
最好的問候,
羅伯特
currelly我在一些項目上工作(基於ZF)和我想知道是否有可能關閉一個或多個模塊。關閉我的意思是ZF不會加載它。Zend Framework - 如何禁用一個或多個模塊
更準確地說,我想關閉其中一個正在退出的應用程序模塊。
讓我說我的應用程序包含一些由sombody其他編寫的模塊,我的時間beeing 我不想使用它。 我希望這個問題對你有意義。
-
最好的問候,
羅伯特
如果我理解正確的,你想禁止從您的網站模塊(視圖/控制器組),你可以註冊一個routeShutdown()
FrontController
插件檢查路由請求。如果它被禁用,那麼你將用戶重定向到一個錯誤控制器。
創建檢查插件如果請求的模塊被禁止
class MyDisabledModules extends Zend_Controller_Plugin_Abstract
{
protected $_disabled = array(
'module1',
'module2',
'sales',
);
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$module = $request->getModuleName();
if (in_array($module, $this->_disabled)) {
$request->setModuleName('default')
->setControllerName('disabled')
->setActionName('index')
->dispatched(false);
}
}
}
,然後在FrontController
註冊它:
Zend_Controller_Front::getInstance()
->registerPlugin(new MyDisabledModules());
您可以硬編碼禁用插件,您可以從獲取它們數據庫,一個XML,從你想要的一切。
或多或少,這是我想達到的事情。謝謝 – Robert 2009-12-18 12:32:24
我認爲路易斯達米姆提出的是過分的和錯誤的。該插件將被稱爲每個電話不必要的。爲什麼要爲禁用模塊做東西?
我會做一個基於配置文件的檢測,其中只有活動模塊被實例化。
UPDATE 通常模塊實例化集體:
$front->addModuleDirectory('/path/to/application/modules');
但是你可以通過一個激活模塊之一,或者通過傳遞一個數組,只有你想要的最活躍者。
$front->setControllerDirectory(array(
'default' => '/path/to/application/controllers',
'blog' => '/path/to/application/blog/controllers'
));
如果使用Zend_application,我認爲你必須改變這條線在你的配置:第一種負載任何模塊可以在找到
resources.modules[] =
與
resources.modules = admin
resources.modules = news
模塊文件夾,這是默認行爲。我還沒有和Zend Application一起工作,所以我不確定這一點,但一定有這樣的事情。
在這種情況下,你會怎麼做?因爲我可以添加一個活動模塊列表,但最後我將不得不檢查被調用的模塊是否在白名單中(在配置文件中有正確的輸入)。 最好的問候, 羅伯特 – Robert 2009-12-19 11:43:06
@Robert檢查更新 – 2009-12-19 12:52:56
你是指Zend Framework組件之一嗎?像Zend_Form?或您的應用程序的其中一個模塊? – 2009-12-17 15:02:51
你對core_module有什麼瞭解?你能給個例子嗎? – 2009-12-17 16:38:38