我得到了流行的模块化扩展-hmvc安装自
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
然后用codeigniter 2.2.2设置,但是当一切正常时,我得到这个错误
MX U路由器的访问级别::_set_default_controller()必须是C:..\application\third_party\MX\router.php第241行中的public(与ci_router类中一样)

最佳答案

解决方案1
我不得不在router.php中更改几个方法的可见性,因此我将以下方法从protected更改为public以使其得到修复

_set_default_controller()
_set_request()
_set_default_controller()

它几乎成功了,但现在我收到了一条警告,上面是熟悉的欢迎使用codeigniter消息
Message: Undefined property: MY_Router::$translate_uri_dashes

所以我将这个属性包装在一个if not empty上,这样就可以绕过这个属性
if(!empty($this->translate_uri_dashes))
        {
            if ($this->translate_uri_dashes === TRUE)
            {
                foreach(range(0, 2) as $v)
                {
                    isset($segments[$v]) && $segments[$v] = str_replace('-', '_', $segments[$v]);
                }
            }
        }

现在它成功了!
解决方案2
有一个准备好的HMVC CI,可以从
http://lab.clearpixel.com.au/2011/10/modularise-your-codeigniter-2-applications-with-modular-extensions-%E2%80%93-hmvc/
但它是ci 2.0.3版本而不是ci2.2.2
解决方案3(最佳)
如果将预配置版本的ci 2.0.3(上面的链接)中的核心文件(my_loader和my_router)和第三方文件夹(mx)放在ci2.2.2中的相应位置中,则工作正常。

09-26 22:24