我正在使用 HMVC 并创建了一个名为 user 的模块。在 modules/user/config 目录中,我有 routes.php,使用与 application/config/routes.php 相同的格式。
在 application/config/routes.php 我有以下路线:
$route['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 时保持我的路由正常工作。
任何想法将不胜感激!
谢谢!
最佳答案
我遇到了与您完全相同的问题,不幸的是 Wiredesignz 创建扩展的方式要求路径以模块名称本身开头,如果您将路由文件放在模块本身中。如果它被放置在一个模块中,这是它查看路由文件的唯一方式。话虽如此,它此时已经知道模块名称,因此您只需指定要将其路由到的 Controller 和方法。所以在你的模块配置目录中的 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 放在模块的配置目录中。
关于带有 Wiredesignz HMVC 路由的 CodeIgniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640481/