[英]Zend Framework - how to disable one or more modules
我目前正在研究某個項目(基於ZF),我想知道是否有可能關閉一個或多個模塊。 關閉,我的意思是ZF根本不會加載它。
更准確地說,我想關閉現有的應用程序模塊之一。
假設我的應用程序包含其他人編寫的一些模塊,而我暫時不想使用它。 我希望這個問題對您有意義。
-
最好的祝福,
羅伯特
如果我理解正確,並且您想從您的站點禁用模塊(視圖/控制器組),則可以注冊一個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和所需的所有內容中獲取它們。
我認為路易斯·達米姆(Luiz Damim)提出的是過分的錯誤。 每次不必要的調用都會調用該插件。 為什么要為禁用模塊做事?
我將基於僅實例化活動模塊的配置文件進行檢測。
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
第一個加載默認情況下會在modules文件夾中找到的模塊。 我還沒有使用Zend Application,所以我對此不確定,但是肯定有類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.