php – Zend Framework中的动态默认模块
发布时间:2020-12-13 18:15:28 所属栏目:PHP教程 来源:网络整理
导读:有没有人知道在Zend Framework中动态设置默认模块而不会遇到命名空间问题的方法?例如,我想要做的是有一个允许加载的模块表,其中一个模块被设置为默认模块.例如,我可能有: adminblogcalendar 作为可以加载的模块.如果我将’blog’作为默认模块,则’admin’
有没有人知道在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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |