CodeIgniter与Wiredesignz HMVC路由

时间:2013-03-26 15:06:27

标签: codeigniter routing hmvc

我正在使用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。

任何想法都将不胜感激!

谢谢!

1 个答案:

答案 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目录中。