php – Zend Framework中的动态默认模块

前端之家收集整理的这篇文章主要介绍了php – Zend Framework中的动态默认模块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人知道在Zend Framework中动态设置默认模块而不会遇到命名空间问题的方法?例如,我想要做的是有一个允许加载的模块表,其中一个模块被设置为默认模块.例如,我可能有:
admin
blog
calendar

作为可以加载的模块.如果我将’blog’作为默认模块,则’admin’和’calendar’必须将其控制器命名为(Admin_IndexController,Calendar_IndexController),而’blog’不是(IndexController).

如果我将’calendar’更改为默认模块,由于命名空间,ZF无法再找到类.

你怎么解决这个问题?我目前正在使用以下代码

$modules = new Modules();
$activeModules = $modules->fetchActive();
foreach($activeModules as $mod) {
    $loadedModules[$mod->name] = '..application/modules/' . $mod->name . '/controllers';
    if($mod->default) {
        $defaultModule = $mod->name;
    }
}
$frontController->setControllerDirectory($loadedModules);
$frontController->setDefaultModule($defaultModule);
如果您打算更改默认模块,最好命名所有模块,然后指定默认模块应该加前缀:

首先更改“博客”模块以使用命名空间:

<?PHP

// Used to be "class IndexController"
class Blog_IndexController extends Zend_Controller_Action {

}

然后,在Zend_Controller_Front实例上调用setParam for prefixDefaultModule选项:

<?PHP

    // Allow your default module to be prefixed
    $frontController->setParam('prefixDefaultModule',true);

有关说明,请参阅bug # 1831.

原文链接:https://www.f2er.com/php/135140.html

猜你在找的PHP相关文章