代码点火器模块化扩展 - MX_Router :: _ set_default_controller()的访问级别必须是公共的(如类CI_Router中)

时间:2015-05-31 07:15:31

标签: php codeigniter codeigniter-hmvc

我从

安装了流行的Modular Extensions - HMVC

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

并使用codeigniter设置2.2.2 但是当一切正常时,我收到此错误

  

MX_Router :: _ set_default_controller()的访问级别必须是第23行的C:.. \ application \ third_party \ MX \ Router.php中的公共(如类CI_Router中)

1 个答案:

答案 0 :(得分:7)

解决方案1 ​​

我必须在Router.php中更改多个方法可见性,因此我将以下方法从protected更改为public以使其得到修复

_set_default_controller()
_set_request()
_set_default_controller()

它几乎可以工作,但现在我收到一条警告,上面是熟悉的欢迎使用CodeIgniter消息

Message: Undefined property: MY_Router::$translate_uri_dashes

所以我把这个属性包装成if 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版本而不是ci 2.2.2

解决方案3(最佳)

如果您将ci 2.0.3中相应位置的预配置版本ci 2.0.3(上面的链接)中的核心文件(MY_Loader和MY_Router)和第三方文件夹(MX)放置在它将起作用细