有没有人知道在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);
如果您打算更改默认模块,最好命名所有模块,然后指定默认模块应该加前缀:
原文链接:https://www.f2er.com/php/135140.html首先更改“博客”模块以使用命名空间:
<?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.