2013-12-11 106 views
2

如何使用數據庫 我模塊的配置文件 想,在我的應用程序的一些點在列表中禁用ZF2的特定模塊,讀取與表模塊的名稱,並禁止他們在我的情況已檢舉爲禁用數據庫如何在Zend框架禁用特定模塊2動態

我使用Doctrine2作爲我的數據庫

回答

0

application.config.php是由ZF2引導加載的第一要素之一,被傳遞到ServiceManager所有模塊(和負載)都列在application.config.php中。在這一點上,沒有加載教條(所以你不能用一個運行zend框架的腳本來檢查一個模塊是否在你的數據庫中「激活」)。

當您檢查public/index.php您可以看到自舉開始

//運行應用程序就行了! (運行需要'config/application.config.php') - > run();這樣就可以使用Zend \ Mvc \ Application :: init了。

這是你的地步,你的邏輯應該被執行(建立一個數據庫連接,創建一個應用程序配置),並把它傳遞給init()方法。

但這不是一個好主意,因爲你需要指定一個數據庫連接,設置數據庫密碼等等,並且「以你自己的方式沒有zf2」。

當你動態地禁用模塊時,我認爲你做了某些「錯誤」的事情,因爲你需要一個模塊,或者你不需要 - 在開發環境中啓用模塊並在你的實時環境中禁用模塊。簡單,因爲它

+1

問題是我需要開發一個模塊管理器,可以選擇在我的儀表板中安裝或不安裝一個或多個模塊,就像wordpress的擴展管理器一樣,還有另一種方法可以做到這一點嗎? – IgorHerson

+0

就像我在magento中指出的那樣,除了正常的應用程序,模塊管理器是一個完全獨立的站點。一個應用程序控制另一個應用程序的擴展。像''composer''。 – ins0

+0

有趣的,你能解釋我更好嗎? – IgorHerson

0

我有更好的方式來做到這一點

只需加載

application.config.php在應用程序配置文件中只應用模塊

'modules' => array( 

    'DoctrineModule', 
    'DoctrineORMModule', 
    'Application', 

), 

然後寫application/module.php中的一個方法,叫做

public function init(ModuleManager $moduleManager) { 

     $moduleManager->loadModule('xyz'); // xyz module will be fetched from db here or depend on you logic. 


    } 

現在你的模塊被你的數據庫加載。