2

如何使用数据库禁用 ZF2 中的特定模块 我在配置文件中有一个模块列表,认为在我的应用程序中的某个时刻,读取包含模块名称的表并禁用在数据库中标记为禁用的模块

就我而言,我使用 Doctrine2 作为我的数据库

4

3 回答 3

1

Vincent Blanchon 的延迟加载模块管理器可能会解决您的问题。它允许有条件地启用或禁用模块。

https://github.com/blanchonvincent/zf2-lazy-loading-module

于 2015-01-27T10:05:31.187 回答
0

application.config.php是 zf2 引导加载的第一个元素之一,并被传递到ServiceManagerwich 循环中列出的所有模块(和加载)application.config.php。此时没有使用使用 zend 框架运行的脚本加载学说(因此您无法检查模块是否在您的数据库中“激活”)。

当您检查时,public/index.php您可以看到引导开始的行

// 运行应用程序!

Zend\Mvc\Application::init(需要'config/application.config.php')->run();

这是您应该实现逻辑的点(建立数据库连接,创建应用程序配置)并将其传递给init()方法。

但这不是一个好主意,因为您需要指定一个数据库连接、设置数据库密码等,以及“在没有 zf2 的情况下走自己的路”。

当您动态禁用模块时,我认为您犯了一些“错误”,因为您需要模块或不需要模块 - 模块在开发环境中启用并在您的实时环境中禁用。就这么简单

于 2013-12-11T23:01:34.053 回答
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.


    }

现在您的模块已由您的数据库加载。

于 2016-12-26T17:42:57.417 回答