我正在使用HMVC并创建了一个名为user的模块。在modules / user / config目录下,我有routes.php,使用与application / config / routes.php相同的格式。
在application / config / routes.php中,我有以下路由:
$route['login'] = 'user/login';
这很好用,当我将它移动到application / modules / user / config / routes.php时,它就不起作用了。我收到404错误。
根据HMVC文档(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
),您必须按如下方式创建路线:
$route['module_name'] = 'controller_name';
这意味着我必须这样做:
$route['user'] = 'user';
然而,这导致了404,即使我没有得到404,这也不是我的想法。我仍然希望保持我的路由工作,因为/ login转到user / login。
任何想法都将不胜感激!
谢谢!
答案 0 :(得分:3)
我和你有同样的问题,不幸的是,Wiredesignz创建扩展的方式,如果你把路径文件放在模块本身里面,它要求路径以模块名称开头。如果路径文件放在模块中,那么它是查看路径文件的唯一方法。据说它已经知道那个时候的模块名称,所以你需要简单地指定你希望它路由到的控制器和方法。所以在你的模块配置目录里面的routes.php文件中,如果你把它放在:
$route['yourmodule/some-route'] = "yourcontroller/yourmethod";
或换句话说:
$route['user'] = 'user/login';
我相信这会奏效。但是我仍然想要更多。我希望能够使用可能有或没有模块名称的路由。由于这个原因,我不得不扩展模块以实现这一目标,如果这有帮助,你可以找到我在这里所做的工作:
https://github.com/brianwozeniak/codeigniter-modular-extensions-hmvc
这将允许您使用您想要的路线,例如:
$route['login'] = 'user/login';
即使将routes.php放在模块的config目录中。