код воспламенителя Модульные расширения – уровень доступа к MX_Router :: _ set_default_controller () должен быть общедоступным (как в классе CI_Router)

Я получаю популярные модульные расширения – HMVC установлен из

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

и установите его с помощью codeigniter 2.2.2, но когда все должно работать нормально, я получаю эту ошибку

Уровень доступа к MX_Router :: _ set_default_controller () должен быть общедоступным (как в классе CI_Router) в C: .. \ application \ third_party \ MX \ Router.php в строке 241

Solutions Collecting From Web of "код воспламенителя Модульные расширения – уровень доступа к MX_Router :: _ set_default_controller () должен быть общедоступным (как в классе CI_Router)"

Решение 1

Мне пришлось изменить видимость нескольких методов в Router.php, поэтому я изменил следующие методы от protected к public чтобы зафиксировать его

 _set_default_controller() _set_request() _set_default_controller() 

и это почти сработало, но теперь я получаю предупреждение выше знакомого сообщения Welcome to CodeIgniter

 Message: Undefined property: MY_Router::$translate_uri_dashes 

поэтому я обернул это свойство вокруг, если не пусто, чтобы обойти это свойство так,

 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 (наилучшее)

если вы поместите основные файлы (MY_Loader и MY_Router) и стороннюю папку (MX) из предварительно сконфигурированной версии ci 2.0.3 (ссылка выше) в соответствующие местоположения в ci 2.2.2, она будет работать нормально.