CodeIgniter与Wiredesignz HMVC路由

问题描述 投票:3回答:1

我正在使用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 docs(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc),你必须创建如下路线:

$route['module_name'] = 'controller_name';

这意味着我必须这样做:

$route['user'] = 'user';

这导致了404,然而,即使我没有得到404,这也不是我想到的。我仍然希望保持我的路由工作,因为/ login转到user / login。

任何想法将不胜感激!

谢谢!

codeigniter routing hmvc
1个回答
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目录中。

© www.soinside.com 2019 - 2024. All rights reserved.