我正在使用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。
任何想法将不胜感激!
谢谢!
我和你有同样的问题,不幸的是,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目录中。