codeigniter hmvc路由无法正常工作

时间:2013-01-07 17:17:32

标签: codeigniter hmvc

我通过wiredesignz安装了HMVC,但application/modules/xxx/config/routes.php的路由根本没有被识别。 这是一个例子:

application/modules/pages/config/routes.php我有:

$route['pages/admin/(:any)'] = 'admin/$1';
$route['pages/admin'] = 'admin';

如果我输入了网址,domain.com/admin/pages/create它无效,则会显示未找到CI 404页面。 如果我将路线移至application/config/routes.php,它就可以正常工作。

如何在不将所有管理路由放在主routes.php

的情况下使其工作

我在网上搜索了4个多小时,但没有找到关于这个问题的答案。我已经检查过模块中的routes.php是否正在加载并且工作正常,但我放入的任何路由都不起作用。

4 个答案:

答案 0 :(得分:6)

我找到了一种方法,让模块的路由工作正常,我不知道是否是理想的解决方案,但到目前为止工作正常:

打开你的应用程序/ config / routes.php并在$ route ['404_override'] =''下面;添加以下代码:

$modules_path = APPPATH.'modules/';     
$modules = scandir($modules_path);

foreach($modules as $module)
{
    if($module === '.' || $module === '..') continue;
    if(is_dir($modules_path) . '/' . $module)
    {
        $routes_path = $modules_path . $module . '/config/routes.php';
        if(file_exists($routes_path))
        {
            require($routes_path);
        }
        else
        {
            continue;
        }
    }
}

即使您的模块文件夹中缺少config文件夹或routes.php,以下解决方案也能正常工作

答案 1 :(得分:2)

这就是:模块的routes.php仅在“调用”该模块时才被加载,否则CI必须从所有加载所有路由配置模块,以处理每个请求(不会发生)。

您必须使用主应用程序的routes.php才能使其正常运行。您没有在URL中使用pages段,因此永远不会加载该模块的路由。

我知道这是你想要避免的,但不幸的是,除非你想得到“hacky”,否则它是不可能的。


以下是我用于将admin/module的请求映射到module/admin的路由,也许您可​​以使用它:

// application/config/routes.php
$route['admin']                     = "dashboard/admin"; // dashboard is a module
$route['admin/([a-zA-Z_-]+)/(:any)'] = "$1/admin/$2";
$route['admin/([a-zA-Z_-]+)']        = "$1/admin/index";
$route['(:any)/admin']               = "admin/$1";

答案 2 :(得分:0)

您只需要https://gist.github.com/Kristories/5227732

MY_Router.php复制到application/core/

答案 3 :(得分:0)

现在有点晚了,但对于想知道如何将codeigniter集成到hmvc的新访问者来说,你可以查看这个教程如何做到这一点。我希望它可以帮助你们.. http://developers.ph/codeigniter/hmvc-pattern-codeigniter-php-framework/