簡體   English   中英

Zend Framework-如何禁用一個或多個模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM