code igniter Modular Extensions - Access level to MX_Router::_set_default_controller() must be public (as in class CI_Router)

岁酱吖の 提交于 2019-12-20 01:41:14

问题


I get the popular Modular Extensions - HMVC installed from

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

and set it up with codeigniter 2.2.2 BUT when everything should be working fine, I get this error

Access level to MX_Router::_set_default_controller() must be public (as in class CI_Router) in C:..\application\third_party\MX\Router.php on line 241


回答1:


Solution 1

I had to change several methods visibility in Router.php , so I changed the following methods from protected to public to get it fixed

_set_default_controller()
_set_request()
_set_default_controller()

and it almost worked but now i get a warning above the familiar Welcome to CodeIgniter message

Message: Undefined property: MY_Router::$translate_uri_dashes

so I wrapped this property around an if not empty to bypass this property like so

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]);
                }
            }
        }

and now it works!


Solution 2

there is a ready HMVC-ci that can be downloaded from

http://lab.clearpixel.com.au/2011/10/modularise-your-codeigniter-2-applications-with-modular-extensions-%E2%80%93-hmvc/

but it's a ci 2.0.3 version not ci 2.2.2

Solution 3 (best)

if you place the core files (MY_Loader and MY_Router) and the third-party folder (MX) from the preconfigured version of ci 2.0.3 (link above) inside the corresponding locations in the ci 2.2.2 it will work just fine.



来源:https://stackoverflow.com/questions/30554851/code-igniter-modular-extensions-access-level-to-mx-router-set-default-contro

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!