2013-03-26 81 views
2

我使用HMVC并创建了一个名为user的模块。在modules/user/config目录中,我有routes.php,使用与application/config/routes.php相同的格式。CodeIgniter与Wiredesignz HMVC路由

在的application/config/routes.php文件我有以下途径:

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

这个伟大的工程,BUIT当我把它移动到应用程序/模块/用户/配置/ routes.php文件,它不起作用。我收到一个404错误。

根据HMVC文档(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc),你必须创建路线如下:

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

这意味着我将不得不做这样的:

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

这导致404,但是,即使我没有得到404,这也不是我想到的。我仍然想让我的路由工作,因为/登录到用户/登录。

任何想法将不胜感激!

谢谢!

+0

任何人在这里有任何想法吗? – 2013-03-27 20:55:21

回答

3

我和你有同样的确切问题,不幸的是Wiredesignz创建了扩展的方式,它需要路径从模块名称本身开始,如果你把路由文件放入模块本身。如果路径文件放在模块中,这是唯一的方法。有了这个说法,它已经知道模块的名称,所以你只需要指定你想要的路由器的控制器和方法。因此,在你的模块配置目录里面的routes.php文件文件,如果你把这个:

$route['yourmodule/some-route'] = "yourcontroller/yourmethod"; 

或者换句话说:

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

这将工作我相信。不过,我仍然想要比这更多。我希望能够使用可能有或没有模块名称的路由。由于这一点,我不得不延长模块要做到这一点,你可以找到我在这里做的工作,如果这有助于:

https://github.com/Bigwebmaster/codeigniter-modular-extensions-hmvc

这则允许你使用你想如路线:

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

即使将该routes.php放置在模块的config目录中。

+0

谢谢@Bigwebmaster。我会研究你的HMVC分支,看看我能否在我的网站上运行它。会很棒。一旦我有机会检查出来,如果有需要,我会立即投入/接受。感谢你的回答! – 2013-04-10 15:05:29

+0

辉煌,感谢,@Bigwebmaster,它也适用于我100%。祝你有美好的一天! – 2013-04-11 14:15:41

+0

嗨,@Bigwebmaster它运行良好,但有些东西你可能想看看:如果你想调用一个没有链接到特定路由的控制器/函数,它会给你一个404错误。您可能需要调用在某个阶段或某个阶段未绑定到路由的函数。 – 2013-04-11 15:21:29