Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Wiredesignz HMVC布线的CodeIgniter_Codeigniter_Routing_Hmvc - Fatal编程技术网

带Wiredesignz HMVC布线的CodeIgniter

带Wiredesignz HMVC布线的CodeIgniter,codeigniter,routing,hmvc,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文件

我使用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时保持路由正常工作

任何想法都将不胜感激


谢谢

我遇到了与您完全相同的问题,不幸的是,Wiredesignz创建扩展名的方式要求,如果将路由文件放在模块本身中,路径必须以模块名称本身开头。这是在模块中放置routes文件时查看该文件的唯一方法。也就是说,它已经知道了该点的模块名,所以您只需指定希望它路由到的控制器和方法。因此,在模块配置目录中的routes.php文件中,如果您将以下内容:

$route['yourmodule/some-route'] = "yourcontroller/yourmethod";
换句话说:

$route['user'] = 'user/login';
我相信那会管用的。然而,我仍然想要更多。我希望能够使用具有或不具有模块名称的路由。因此,我必须扩展模块以实现这一点,如果这有帮助,您可以在这里找到我所做的工作:

这将允许您使用所需的路线,例如:

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

即使routes.php被放在模块的配置目录中。

这里有人有什么想法吗?谢谢@Bigwebmaster。我会调查你的HMVC分支,看看我是否能让它在我的网站上工作。那太棒了。一旦我有机会查看它,如果需要,我会投票/接受。谢谢你的回答!太棒了,谢谢,@Bigwebmaster,它对我也100%有效。祝你有美好的一天!您好,@Bigwebmaster它工作得很好,但有一点您可能想看看:如果您想调用未链接到特定路由的控制器/函数,它会给您一个404错误。您可能需要在某些阶段调用未绑定到路由的函数。默认情况下,我这样做是为了使路由无效,除非指定。在文档中我也提到了这一点,但基本上如果您进入routes.php并更改:protectedstatic$remove\u default\u routes=TRUE;如果设置为FALSE,则应该允许默认路由在任何地方都工作。我最近还设置了一个默认路由,这样即使没有明确指定路由,也可以通过其他模块在内部调用控制器/方法,尽管我没有在那里做过太多测试,因此它可能无法正常工作。