расширить контроллер внутри модуля Codeigniter HMVC

Как расширить контроллер модуля HMVC внутри самого модуля?

class Backend extends Backend_Controller {
public function __construct(){
parent::__construct();
}
}

Предполагая следующую типичную файловую структуру Codeigniter применительно к HMVC:

/
/application
/application/modules
/application/modules/backen
/application/modules/backen/controllers
/application/modules/backen/controllers/Backend.php
/application/modules/backen/libraries
/application/modules/backen/libraries/Backend_Controller.php

В этой структуре получите ошибку «класс не найден». Работает, чтобы положить в папку «/application/libraries/Backend_Controller.php».

0

Решение

Контроллеры должны расширять CI_Controller в CodeIgniter. Контроллеры не могут расширять библиотеки, но они могут включать их, например, $ this-> load-> library (‘backendLib’);

Если вы используете расширение Wiredesignz HMVC, вы можете использовать для этого базовые контроллеры. Просто создайте класс backend_controller в основном каталоге и сделайте так, чтобы он расширял MX_Controller. Теперь вы можете заставить контроллер модуля расширять backend_controller.

Лучший,

Барт

2

Другие решения

Привет, CI всегда ищет основные классы, начинающиеся с CI_Controller, или расширенные имена классов, начинающиеся с MY_, такие как MY_Controller, MY_Email и т. Д. Если ваш любой другой класс, который нужно назвать не похожим на библиотеку, вы можете добавить следующий код в config.php, он автоматически загрузит пользовательский класс

/*
| -------------------------------------------------------------------------
| Native spl_autoload_register() - by Kenneth Vogt
| -------------------------------------------------------------------------
|
| Here is an updated version of Phil Sturgeon’s code:
|
| Thanks to Phil Sturgeon Kenneth Vogt and InsiteFX.
|
| NOTE:
| Requires PHP 5.3.+
| As of CI 3.0 Dev - The constant EXT has been removed modified
| to use '.php' now instead of EXT.
| should work for all version of CI and PHP 5.3
|
| Place at the bottom of your ./application/config/config.php file.
| -------------------------------------------------------------------------
*/

spl_autoload_register(function($class)
{
if (strpos($class, 'CI_') !== 0)
{
if (file_exists($file = APPPATH . 'core/' . $class . '.php'))
{
include $file;
}
elseif (file_exists($file = APPPATH . 'libraries/' . $class . '.php'))
{
include $file;
}
}
});

ссылка из этой темы
http://forum.codeigniter.com/thread-473-post-2679.html#pid2679

Теперь вы можете расширить свой контроллер с помощью пользовательского имени контроллера. Backend_Controller этот класс должен быть доступен в приложении либо в библиотеке, либо в директории ядра

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector