带有 Wiredesignz HMVC 路由的 CodeIgniter

标签 codeigniter routing hmvc

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

相关文章:

php - 如何创建一个表单,将条目添加到数据库并通过电子邮件发送指向该条目的链接

php - mysql_connect() : Access denied for user 'mss' @'localhost'

php - 在 Codeigniter 的库中连接另一个数据库

php - 在 CodeIgniter 中用别名值(文章标题)替换 URI 参数(文章 ID)

asp.net-mvc - 你如何构建你的 URL 路由?

php - 与 PHP 中的 MVC 相比,HMVC 的优缺点

url-routing - 如何解决 HMVC 中的路由问题?

c# - ASP.NET WebForms 域路由

php - 十月 CMS - 如何正确路由

php - 如何使用 CI3 + HMVC 在我的 Controller 中调用另一个模块 Controller ?